1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| package com.kujilabo;
import org.junit.Test;
import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.IntStream;
public class StreamTest { @Test public void stringToInteger() { // 文字列の長さを取得します。 List<String> list1 = Arrays.asList("apple", "orange", "strawberry"); List<Integer> list2 = list1.stream().map(String::length).collect(Collectors.toList()); System.out.println(list2); // [5, 6, 10] }
@Test public void listToMap() { // リストをマップに変換します。マップのキーは文字列、値は文字列の長さです。 List<String> list1 = Arrays.asList("apple", "orange", "strawberry"); Map<String, Integer> map1 = list1.stream().collect(Collectors.toMap(Function.identity(), String::length)); System.out.println(map1); // {orange=6, apple=5, strawberry=10} // toMap の第1引数はキーを返す関数、第2引数は値を返す関数を渡します。 // Function.identity は 引数をそのまま返す関数です。 // つまり、以下と同じです。 // Map<String, Integer> map2 = list1.stream().collect(Collectors.toMap(x -> x, x -> x.length())); }
@Test public void intStream() { // int の連番リストはIntStreamで作成できます。 // IntStream を Stream<Integer> に変換するには boxed を使います。 List<Integer> list1 = IntStream.range(0, 10).boxed().collect(Collectors.toList()); System.out.println(list1); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] }
@Test public void withIndex() { // 配列の添字を使いたい場合の例です。 List<String> list1 = Arrays.asList("apple", "orange", "strawberry"); List<String> list2 = IntStream.range(0, list1.size()) .mapToObj(i -> i + " " + list1.get(i)) .collect(Collectors.toList()); System.out.println(list2); // [0 apple, 1 orange, 2 strawberry] }
@Test public void sort() { // 文字列の長さ昇順でソート List<String> list1 = Arrays.asList("orange", "strawberry", "apple"); List<String> list2 = list1.stream() .sorted(Comparator.comparing(String::length)) .collect(Collectors.toList()); System.out.println(list2); // [apple, orange, strawberry] }
@Test public void reverse() { // 文字列の長さ降順でソート List<String> list1 = Arrays.asList("orange", "strawberry", "apple"); List<String> list2 = list1.stream() .sorted(Comparator.comparing(String::length).reversed()) .collect(Collectors.toList()); System.out.println(list2); // [strawberry, orange, apple] } }
|