1. 程式人生 > 其它 >java 8 lamda stream操作

java 8 lamda stream操作

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; } }
View Code

物件陣列直接初始化:

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()));
        });