注意事项
1.流遍历过程中不能对变量进行操作
2.流中跳出本次循环可用return 等同于 for循环中的continue
一、对map操作
//过滤
int sum = hashMap.entrySet().stream().filter(entry -> entry.getKey().equals(1) || entry.getKey().equals(3) || entry.getKey().equals(5) || entry.getKey().equals(7))
.mapToInt(entry -> entry.getValue()).sum();
System.out.println(sum);
//hashMap与hashMap2 合并,之后key相同的value相加
hashMap.forEach((key, value) -> hashMap2.merge(key, value, Integer::sum));
二、对list操作
//对list进行分页
int pageNum=1;
int pageSize=5;
List<Integer> collect = arrayList.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
//取arrayList与arrayList2的交集
List<Integer> result = arrayList.stream()
.filter(arrayList2::contains)
.collect(Collectors.toList());
System.out.println("交集结果是: " + result);
ArrayList<Person> persons = new ArrayList<>();
persons.add(new Person("张三", 23));
persons.add(new Person("李四", 24));
persons.add(new Person("王五", 25));
persons.add(new Person("赵六", 23));
//对list进行分组
Map<Integer, List<Person>> collect1 = persons.stream().collect(Collectors.groupingBy(person -> person.getAge()));
collect1.forEach((key, value) -> System.out.println(key + " " + value));
/*
* 运行结果:
23 [Person{name='张三', age=23}, Person{name='赵六', age=23}]
24 [Person{name='李四', age=24}]
25 [Person{name='王五', age=25}]
*/
ArrayList<Person> person2 = new ArrayList<>();
person2.add(new Person("张三", 23));
person2.add(new Person("李四", 24));
person2.add(new Person("王五", 25));
person2.add(new Person("赵六", 23));
//根据对象的属性进行排序
persons.stream().sorted(Comparator.comparing(Person::getAge)).forEach(person -> System.out.println(person));
/**
* 运行结果:
* Person{name='张三', age=23}
* Person{name='赵六', age=23}
* Person{name='李四', age=24}
* Person{name='王五', age=25}
*/