-
准备阶段
新建实体类Stream
private String id; private String name; private Integer age; private BigDecimal pay; public Stream(String id, String name,Integer age,BigDecimal pay) { this.id = id; this.name = name; this.age=age; this.pay=pay; } @Override public String toString() { return "Stream{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", age='" + age + '\'' + ", pay='" + pay + '\'' + '}'; } public String getId() { return id; } public String getName() { return name; } public void setId(String id) { this.id = id; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public BigDecimal getPay() { return pay; } public void setPay(BigDecimal pay) { this.pay = pay; }
新建两个集合
List<Stream> list=new ArrayList<>(); list.add(new Stream("1","李三",34,new BigDecimal(0.1))); list.add(new Stream("2","李大",58,new BigDecimal(20.5))); list.add(new Stream("3","李五",29,new BigDecimal(52.2))); list.add(new Stream("4","李八",18,new BigDecimal(25.3))); list.add(new Stream("5","李七",20,new BigDecimal(35.65))); List<String> list2=new ArrayList<>(); list2.add("1 2 3"); list2.add("4 5 6"); list2.add("7 8 9");
-
filter
filter 方法用于通过设置的条件过滤出元素。
list=list.stream().filter(Stream->Stream.getId()=="1").collect(Collectors.toList());
-
sorted
sorted 方法用于对流进行排序。
//按年龄排序,从小到大,升序 list=list.stream().sorted((p1,p2)->p1.getAge()-p2.getAge()).collect(Collectors.toList()); list=list.stream().sorted(Comparator.comparingInt(Stream::getAge)).collect(Collectors.toList()); //从大到小降序 list=list.stream().sorted(Comparator.comparingInt(Stream::getAge).reversed()).collect(Collectors.toList()));
-
Limit
返回前n个。
list=list.stream().limit(2).collect(Collectors.toList());
-
Skip
去除前n个。
list=list.stream().skip(2).collect(Collectors.toList());
-
Map
把一个集合中的字段映射到另一个集合。
List<String> stringList=list.stream().map(Stream::getName).collect(Collectors.toList())
-
filterMap
list字符串连接
list2=list2.stream().map(m->m.split(" ")).flatMap(Arrays::stream).collect(Collectors.toList())```
-
anyMatch
流中是否有一个元素匹配给定的T->boolean条件
流中是否包含任一个年龄等于34的数据,如果有输出true
boolean b=list.stream().anyMatch(stream -> stream.getAge()==34);
-
allMatch
流中是否所有元素都匹配给定的条件
流中是否全部的年龄都大于20boolean b=list.stream().allMatch(stream -> stream.getAge()>20);
-
reduce
统计年龄
int sum=list.stream().map(Stream::getAge).reduce(0,(a,b)->a+b); int sum=list.stream().map(a->a.getAge()).reduce(new Integer(0),(a,b)->a+b); BigDecimal sum=list.stream().map(Stream::getPay).reduce(new BigDecimal(0),(a,b)->a.add(b),BigDecimal::add);
-
count
总记录条数
long count=list.stream().count();
-
forEach
list.stream().forEach(System.out::println);