Java8中应用最多的就是流,相比以往的迭代器,增强for循环快50多倍,日常开发中用的最多就是List 转map
获取对象属性的集合,List 去重这个Java8中已经有现成的方法,还有数据分组,Java8已经给我们提供好了,不了解java8的新特性是不行de。
java8的新特性还有Function Optional 接口,接口默认方法等,这个用的不多。 Function 接口实际上就是和匿名函数差不多。Predicate的方法可以判读属性是否存在。
//list 转map
Map<String, Integer> map = sList.stream()
.collect(Collectors.toMap(Student::getStudentName,
Student::getStudentAge));
//集合遍历
map.forEach((k, v) -> System.out.println(k + "-->" + v));
//将集合转换为map
Map<String,Student> map2 = sList.stream().collect(Collectors.toMap(Student::getStudentName,Function.identity(), (t1,t2)->t1));
map2.forEach((k,v)->{
System.out.println(k+"->"+v);
});
//分组
Map<String,List<Student>> map3 = sList.stream().collect(Collectors.groupingBy(Student::getStudentName));
map3.forEach((k,v)->{
System.out.println(v.toString());
});
List<Student> filterList = sList.stream().filter(a -> a.getStudentName().equals("zhangsan")).collect(Collectors.toList());
System.out.println(filterList.toString());
//Optional 常用方法
Optional<Integer> a1 = Optional.of(11);
Optional<Integer> a2 = Optional.of(24);
//如果存在则返回1,如何不存在则返回11
String string ="Helloworld";
List<String>stringList = Arrays.asList(string).stream().map(str2 ->str2.split("")).flatMap(Arrays::stream).distinct().collect(Collectors.toList());
//flatMap 和 map 的用法
List<String> stringList2= sList.stream().flatMap(item->Arrays.stream(item.split(""))).distinct().collect(Collectors.toList());
List<Stream<String>> streamList = stringList.stream().map(item->Arrays.stream(item.split(""))).distinct().collect(Collectors.toList());
List<String> result = stringList.stream().map(item2>item2.split("")).flatMap(Arrays::stream).distinct().collect(Collectors.toList());