List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
// 获取对应的平方数
List<Integer> squaresList = numbers.stream().map( i -> i*i).distinct().collect(Collectors.toList());
squaresList.forEach(x -> System.out.println(x));
结果:
9
4
49
25
获取空字符串的数量:
List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
// 获取空字符串的数量
Long count = strings.stream().filter(string -> !string.isEmpty() && string.length()==3).count();
System.out.println(count);
结果:
3
对随机数排序:
//用于对流进行排序。以下代码片段使用 sorted 方法对输出的 5 个随机数进行排序:
Random random = new Random();
random.ints().limit(5).sorted().forEach(System.out::println);
结果
-1907801935
-1887798425
-1463883840
-1238902402
-256137322
流转换集合和聚合元素:
//流转换成集合和聚合元素。Collectors 可用于返回列表或字符串:
List<String>strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
System.out.println("筛选列表: " + filtered);
String mergedString = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.joining(", "));
System.out.println("合并字符串: " + mergedString);
结果:
筛选列表: [abc, bc, efg, abcd, jkl]
合并字符串: abc, bc, efg, abcd, jkl
普通类型排序:
//普通类型排序
List<Integer> ints = Arrays.asList(2, 3, 2, 6, 1,5, 0);
ints = ints.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
ints.forEach(x -> System.out.println(x));
结果:
6
5
3
2
2
1
0
对象类型排序:
// 对象类型排序
List<Student> list = new ArrayList<Student>();
list.add(new Student(1, "Mahesh", 12));
list.add(new Student(2, "Suresh", 15));
list.add(new Student(3, "Nilesh", 10));
list = list.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList());
list.forEach(student -> System.out.println(student.getAge()));
结果:
10
12
15