Java 8の新機能を使用して、List<String>
のすべての値を変換する最も簡潔な方法は何ですか?
これを考えると:
List<String> words = Arrays.asList("Apple", "Ananas", "Mango", "Banana", "Beer");
私は現在これをやっています:
for (int n = 0; n < words.size(); n++) {
words.set(n, words.get(n).toUpperCase());
}
Java 8の新しいLambdas、Collections、およびStreams APIがどのように役立つか:
値をインプレースで変換します(新しいリストを作成せずに)
値を新しい結果リストに変換します。
これは私が思いついたものです:
リストを考えると:
List<String> keywords = Arrays.asList("Apple", "Ananas", "Mango", "Banana", "Beer");
多分私はそれが欠けているかもしれません、リストにラムダをとる「適用」または「計算」メソッドがないようです。したがって、これは古いJavaの場合と同じです。私はJava 8。
for (int n = 0; n < keywords.size(); n++) {
keywords.set(n, keywords.get(n).toUpperCase());
}
For(..)ループに勝るこの方法はありますが:
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());