java 8 lamda stream操作
Stream的特性:
stream不存储数据,而是按照特定的规则对数据进行计算,一般会输出结果。
stream不会改变数据源,通常情况下会产生一个新的集合或一个值。
stream具有延迟执行特性,只有调用终端操作时,中间操作才会执行。
生成流的方式有两种:
1、stream() 为集合创建串行流
2、parallelStream() 为集合创建并行流(数据量大时选择此方式会更加高效)
model属性:
public class Person { private Integer id; private String name; private String sex; private Integer age; public Person(Integer id,String name,String sex,Integer age){ this.id = id; this.name = name; this.sex = sex; this.age = age; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
对象数组直接初始化:
Person persons[] = new Person[]{ new Person(1, "张三", "1", 25), new Person(2, "李四", "1", 35), new Person(3, "安红", "2", 22), new Person(4, "小王", "2", 28) }; List<Person> list = Arrays.asList(persons);
list以性别分组:
Map<String,List<Person>> map = list.stream().collect(Collectors.groupingBy(Person::getSex));
分组后的key排序:
LinkedHashMap<String,List<Person>> result = new LinkedHashMap<>(); //分组后的key排序 map.entrySet().stream() .sorted(Map.Entry.<String,List<Person>>comparingByKey().reversed())//reversed()方法倒序 不加为升序 //map无序 so重新装进LinkedHashMap .forEachOrdered(m -> result.put(m.getKey(), m.getValue())); result.forEach((key,value)->{ System.out.println(key); value.forEach(p -> System.out.println(p.getName())); });

浙公网安备 33010602011771号