使用Java中的Stream操作

将其转换为数组

Stream<String> streamString = Stream.of("a", "b", "c");
String[] stringArray = streamString.toArray(String[]::new);

Stream之间的连接

Stream.concat(stream1, stream2, ...)

// 2つのStreamを結合する例
List<String> values = Stream.concat(
        Stream.of("a", "b", "c"),
        Stream.of("d", "e"))
        .collect(Collectors.toList());
System.out.println(values); // -> [a, b, c, d, e]

用IntStream迭代数值的范围

// forを利用し1〜9までループ
List<String> values = new ArrayList<>();
for (int i = 1; i < 10; i++) {
    values.add("value:" + i);
}
System.out.println(values); // -> [value:1, value:2, value:3, value:4, value:5, value:6, value:7, value:8, value:9]

// IntStreamで1〜9までのStreamを生成
List<String> values = IntStream.range(1, 10)
        .boxed()
        .map(value -> "value:" + value)
        .collect(Collectors.toList());
System.out.println(values); // -> [value:1, value:2, value:3, value:4, value:5, value:6, value:7, value:8, value:9]

自定义收藏家

Stream<String> stream = Stream.of("apple", "banana", "cherry");
String result = stream.collect(
    Collector.of(
        StringBuilder::new,
        StringBuilder::append,
        StringBuilder::append,
        StringBuilder::toString
    )
);

System.out.println(result); // -> applebananacherry

嵌套收藏器的示例

record Person(String name, int age, String city) {
}

List<Person> people = Arrays.asList(
    new Person("Alice", 23, "London"),
    new Person("Bob", 28, "New York"),
    new Person("Charlie", 33, "London"),
    new Person("Diana", 40, "New York"),
    new Person("Eve", 28, "London"),
    new Person("Frank", 33, "New York")
);

Map<String, Map<Integer, List<String>>> groupedByCityAgeAndNames = people.stream()
    .collect(
        Collectors.groupingBy(
            Person::city, Collectors.groupingBy(
                Person::age, Collectors.mapping(
                    Person::name, Collectors.toList()
                )
            )
        )
    );

System.out.println(groupedByCityAgeAndNames); // -> {New York={33=[Frank], 40=[Diana], 28=[Bob]}, London={33=[Charlie], 23=[Alice], 28=[Eve]}}

bannerAds