List集合Stream流
JDK8 中的 Stream 是对集合(Collection)对象功能的增强,它借助于lambda表达式,更优雅的表达风格,极大的提高编程效率和程序可读性。它针对于对集合对象进行各种非常便利、高效的聚合操作,或者大批量数据操作。
forEach() | 遍历流中的对象 | list.stream().forEach((name) -> System.out.println(name)); |
filter() | 过滤 | list.stream().filter((name) -> name.length()==2); |
map() | 对集合中的对象进行映射的,将对象从一种类型转换成另一种类型 | list.stream().map(num -> Integer.parseInt(num)); |
count() | 对流数据统计的方法,但是count之后返回的是long类型,所以无法再进行流操作 | System.out.println(list.stream().count()); |
limit() | 选取流数据的前多少条数据 | list.stream().limit(2); |
skip() | 跳过流数据的前多少条数据,该方法与limit()方法刚好相反 | list.stream().skip(2); |
concat() | Stream的静态方法concat()实现对两个流数据进行合并 | Stream.concat(list.stream(),list1.stream()); |
Collectors | Collectors 类实现了很多归约操作,例如将流转换成集合和聚合元素。Collectors 可用于返回列表或字符串 | List strings = Arrays.asList(“abc”, “”, “bc”, “efg”, “abcd”,"", “jkl”); List filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList()); String mergedString = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.joining(", ")); |