Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java8中的特性,转换列表中所有值的最简洁方法是什么?_Java_List_Collections_Lambda_Java 8 - Fatal编程技术网

使用Java8中的特性,转换列表中所有值的最简洁方法是什么?

使用Java8中的特性,转换列表中所有值的最简洁方法是什么?,java,list,collections,lambda,java-8,Java,List,Collections,Lambda,Java 8,使用Java8的新特性,转换列表的所有值的最简洁的方法是什么 鉴于此: List<String> words = Arrays.asList("Apple", "Ananas", "Mango", "Banana", "Beer"); List words=Arrays.asList(“苹果”、“安娜”、“芒果”、“香蕉”、“啤酒”); 我目前正在这样做: for (int n = 0; n < words.size(); n++) { words.set(n, w

使用Java8的新特性,转换
列表的所有值的最简洁的方法是什么

鉴于此:

List<String> words = Arrays.asList("Apple", "Ananas", "Mango", "Banana", "Beer");
List words=Arrays.asList(“苹果”、“安娜”、“芒果”、“香蕉”、“啤酒”);
我目前正在这样做:

for (int n = 0; n < words.size(); n++) {
    words.set(n, words.get(n).toUpperCase());
}
for(int n=0;n
Java 8中新的Lambdas、Collections和Streams API如何帮助:

  • 就地转换值(不创建新列表)

  • 将值转换为新的结果列表


  • 这就是我想到的:

    鉴于清单:

    List<String> keywords = Arrays.asList("Apple", "Ananas", "Mango", "Banana", "Beer");
    
    (2) 转换并创建新列表
    List changed=关键字.stream()
    .map(it->it.toUpperCase()).collect(Collectors.toList());
    
    可能在集合中使用新的流概念:

    List<String> keywords = Arrays.asList("Apple", "Ananas", "Mango", "Banana", "Beer");
    //(1)
    keywords = keywords.stream().map(s -> s.toUpperCase()).collect(Collectors.toList());
    //(2)
    List<String> uppercaseKeywords = keywords.stream().map(s -> s.toUpperCase()).collect(Collectors.toList());
    
    List关键字=Arrays.asList(“苹果”、“Ananas”、“芒果”、“香蕉”、“啤酒”);
    //(1)
    关键字=关键字.stream().map(s->s.toUpperCase()).collect(collector.toList());
    //(2)
    列出uppercaseKeywords=keywords.stream().map(s->s.toUpperCase()).collect(Collectors.toList());
    
    (1)不起作用,因为stream()。map(…)只返回另一个流。。。但是(2)确实有效。我不确定我是否喜欢Array.asList(…)部分,但不太麻烦。我改正了(1)。与(2)类似,但我认为所有方法都要经过collect方法或数组转换。(1)现在生成一个新列表。。。我希望我遗漏了一些东西,或者可能还有其他一些API需要应用一个列表和一个函数:((刚刚为Java 8流下了眼泪)好吧,toUppercase()也是如此),它不会改变字符串,但会返回一个新的字符串。也许这是Java的方式,你知道,不要担心低级的细节,有一个垃圾收集器可以清理无用的对象和神奇的优化:我只考虑一个列表传入的情况,需要对同一个列表进行修改才能成为capt由调用者调用,例如Collections.sort(…)或其他一些列表转换函数。否则,是的,Java magic应该处理(1)do
    keywords.replaceAll(String::toUpperCase)
    。是的!!!这就是我一直在寻找的答案!!令人惊叹的。
    IntStream.range(0,keywords.size())
        .forEach( i -> keywords.set(i, keywords.get(i).toUpperCase()));
    
    List<String> changed = keywords.stream()
        .map( it -> it.toUpperCase() ).collect(Collectors.toList());
    
    List<String> keywords = Arrays.asList("Apple", "Ananas", "Mango", "Banana", "Beer");
    //(1)
    keywords = keywords.stream().map(s -> s.toUpperCase()).collect(Collectors.toList());
    //(2)
    List<String> uppercaseKeywords = keywords.stream().map(s -> s.toUpperCase()).collect(Collectors.toList());