Stream是对集合(Collection)对象功能的增强,它借助于lambda表达式,更优雅的表达风格,极大的提高编程效率和程序可读性。它针对于对集合对象进行各种非常便利、高效的聚合操作,或者大批量数据操作。
stream流的获取
在Collection集合下,均有一个stream(),另一个即是用Stream的一个静态方法 of() 实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public static void main(String[] args) { Collection<String> collection = new ArrayList(); Stream<String> stream = collection.stream(); List<String> list = new ArrayList<>(); Stream<String> stream1 = list.stream(); ArrayList<String> arrayList = new ArrayList<>(); Stream<String> stream2 = arrayList.stream(); LinkedList<String> linkedList = new LinkedList<>(); Stream<String> stream3 = linkedList.stream();
List<String> list1 = new ArrayList<>(); Stream<List<String>> stream4 = Stream.of(list1); Stream<String> stream5 = Stream.of("1","2","3","4"); }
|
foreach()
遍历流中的对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("张三"); list.add("李四"); list.add("李四"); list.add("李四"); list.add("李四"); list.add("李四"); list.add("李四");
list.stream().forEach((name) -> System.out.println(name)); }
|
filter()
filter对流对象进行过滤
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("张三"); list.add("李四二"); list.add("李四我"); list.add("李四去晚"); list.add("李四请问"); list.add("李四去"); list.add("李四我");
list.stream().filter((name) -> name.length()==2); }
|
map()
map是对集合中的对象进行映射的,将对象从一种类型转换成另一种类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); list.add("5"); list.add("6"); list.add("7");
list.stream().map(num -> Integer.parseInt(num)); }
|
count()
count是对流数据统计的方法,但是count之后返回的是long类型,所以无法再进行流操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); list.add("5"); list.add("6"); list.add("7");
System.out.println(list.stream().count()); }
|
limit()
选取流数据的前多少条数据
1 2 3 4 5 6 7 8 9 10 11 12 13
| public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("李四1"); list.add("李四2"); list.add("李四3"); list.add("李四4"); list.add("李四5"); list.add("李四6"); list.add("李四7"); list.stream().limit(2); }
|
skip()
跳过流数据的前多少条数据,该方法与limit()方法刚好相反
1 2 3 4 5 6 7 8 9 10 11 12 13
| public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("李四1"); list.add("李四2"); list.add("李四3"); list.add("李四4"); list.add("李四5"); list.add("李四6"); list.add("李四7"); list.stream().skip(2); }
|
concat()
Stream的静态方法concat()实现对两个流数据进行合并
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("李四1"); list.add("李四2"); list.add("李四3"); list.add("李四4"); list.add("李四5"); list.add("李四6"); list.add("李四7"); ArrayList<String> list1 = new ArrayList<>(); list1.add("1"); list1.add("2"); list1.add("3"); list1.add("4"); list1.add("5"); list1.add("6"); list1.add("7"); Stream.concat(list.stream(),list1.stream()); }
|