1. Stream的filter方法实现对集合元素的过滤
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
Stream<Integer> integerStream = list.stream().filter(a -> a > 3);
List<Integer> list1 = integerStream.collect(Collectors.toList());
System.out.println(list1.toString());
//输出结果:[4, 5, 6, 7, 8, 9, 10]
List<PersonTest> list = new ArrayList<>();
list.add(new PersonTest("小魏",20,"女"));
list.add(new PersonTest("小王",30,"男"));
list.add(new PersonTest("小刚",15,"男"));
Stream<PersonTest> filterStream = list.stream().filter(person -> person.getSex().equals("男"));
List<PersonTest> list1 = filterStream.collect(Collectors.toList());
list1.forEach(System.out::println);
2. stream的map方法对list中的元素进行操作,可以是数据类型转换,可以是计算等
List<Integer> list = Arrays.asList(1,2,3,4,5);
Stream<Long> stringStream = list.stream().map(x -> x.longValue());
stringStream.collect(Collectors.toList()).forEach(System.out::println);
Stream<Integer> stringStream2 = list.stream().map(x -> x * 2);
stringStream2.collect(Collectors.toList()).forEach(System.out::println);
3.Stream.collect()方法
- 流转字符串:Collectors.joining();
List<Integer> list = Arrays.asList(1,2,3,4,5);
String collect = list.stream().map(x -> x.toString()).collect(Collectors.joining("-", "pre", "suf"));
//不带参数,表示拼接字符串没有任何拼接符号:12345
//带一个参数,表示拼接字符串用的连接符:1-2-3-4-5
//带3个参数,表示连接的字符串,前缀和后缀:pre1-2-3-4-5suf
- 流转集合:Collectors.toList()
List<Integer> list = Arrays.asList(1,2,3,4,5);
list.stream().filter(x -> x >2).collect(Collectors.toList());
- 流转map: Collectors.toMap()
#使用lambda表达式设置key和value
Map<String, String> collect = list.stream().map(x -> x.toString()).collect(Collectors.toMap(x->x + "a", String::toString,(s1,s2) -> s1));
#使用对象的属性来设置key和value
Map<String, Integer> map = students.stream().collect(Collectors.toMap(Student::getName, Student::getAge));
Map<String, String> collect = list.stream().map(x -> x.toString()).collect(Collectors.toMap(String::toString, String::toString));
// 第一个参数为key.
// 第二为value;
// 第三个表示前后的key是相同,到是覆盖还是不覆盖,(s1,s2)-> s1表示不覆盖,(s1,s2)-> s2 表示覆盖。