使用Java8中的特性,转换列表中所有值的最简洁方法是什么?
使用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
列表的所有值的最简洁的方法是什么
鉴于此:
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)dokeywords.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());