筛选出符合条件的元素
private void test1() {
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> collect = list.stream().filter(num -> num > 1).collect(Collectors.toList());
System.out.println(collect);
}
输出
[2, 3]
筛选出实体类的某个属性
private void test2() {
List<StudentDO> list = new ArrayList<>(Arrays.asList(new StudentDO("张三"), new StudentDO("李四")));
List<String> collect = list.stream().map(StudentDO::getName).collect(Collectors.toList());
System.out.println(collect);
}
输出
[张三, 李四]
筛选出list1中有,list2中没有的元素
private void test3() {
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
List<Integer> list2 = new ArrayList<>(Arrays.asList(4, 5, 6));
List<Integer> collect = list1.stream().filter(num1 -> list2.stream().noneMatch(num2 -> Objects.equals(num1, num2)))
.collect(Collectors.toList());
System.out.println(collect);
}
输出
[1, 2, 3]
筛选出list1、list2都有的元素
private void test4() {
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
List<Integer> list2 = new ArrayList<>(Arrays.asList(4, 5, 6));
List<Integer> collect = list1.stream().filter(num1 -> list2.stream().anyMatch(num2 -> Objects.equals(num1, num2)))
.collect(Collectors.toList());
System.out.println(collect);
}
输出
[4, 5]
把实体类的两个属性筛选出来组成map
private void test5() {
List<StudentDO> list = new ArrayList<>(Arrays.asList(new StudentDO(1, "张三"), new StudentDO(2, "李四")));
Map<Integer, String> map = list.stream().collect(Collectors.toMap(StudentDO::getId, StudentDO::getName));
System.out.println(map);
}
输出
{1=张三, 2=李四}
对实体类的某一字段求和
private void test6() {
List<StudentDO> list = new ArrayList<>(Arrays.asList(new StudentDO(1, "张三"), new StudentDO(2, "李四")));
int sum = list.stream().mapToInt(StudentDO::getId).sum();
System.out.println(sum);
}
输出
3
Arrays.stream可以对基本类型数组做流式操作,如对基本类型数组求和
public void test8() {
int[] arr = new int[]{1, 2, 3, 4};
int sum = Arrays.stream(arr).sum();
System.out.println(sum);
}
输出
10
对基本类型数组装箱
public void test7() {
int[] arr = new int[]{1, 2, 3, 4};
List list = Arrays.stream(arr).boxed().collect(Collectors.toList());
System.out.println(list);
}
输出
[1, 2, 3, 4]
对int数组求和
public void test8() {
int[] arr = new int[]{1, 2, 3, 4};
System.out.println(Arrays.stream(arr).sum());
}
未完待续...
网友评论