Java 8 Stream流對對象的排序(一個對象裏面的多個屬性進行排序)

1.要對一個對象裏面的多個字段進行排序

可以這麼寫,假設
List<People> list = new ArrayList<>();
這個類有多個屬性,先根據年齡再根據身高排序
@Data
public class People {
    private int age;
    private int height;
}

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collector;
import java.util.stream.Collectors;

/**
 * Created by FangPing on 2020-04-01
 */
public class Test {
    public static void main(String[] args) {
        List<People> list = new ArrayList<>();
        People people = new People();
        people.setAge(1);
        people.setHeight(2);
        list.add(people);
        People people1 = new People();
        people1.setAge(2);
        people1.setHeight(1);
        list.add(people1);
        Comparator<People> comparator = (o1, o2) -> {
            int ageA = o1.getAge();
            int ageB = o2.getAge();
            if (ageA != ageB) {
                return ageA - ageB;
            }

            int heightA = o1.getHeight();
            int heightB = o2.getHeight();
            if (heightA != heightB) {
                return heightA - heightB;
            }
            return 0;
        };
        // 最終的結果
        list = list.stream().sorted(comparator).collect(Collectors.toList());
        for (int i=0;i<list.size();i++){
            People people2 = list.get(i);
            System.out.println("age is" + people2.getAge() + "height is" + people2.getHeight());
        }
    }
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章