List的各種排序

一:(Integer)o1在前,o2在後是正序,o1在後,o2在前是倒序

 public static void main(String[] args) {
        List<Integer> integers = new ArrayList<Integer>() {{
            add(5);
            add(2);
            add(1);
            add(1);
            add(3);
            add(4);
            add(7);
        }};

        /**o1在前,o2在後是正序,o1在後,o2在前是倒序 */
        List<Integer> list = integers.stream().sorted(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;
            }
        }).collect(Collectors.toList());

        System.err.println(list.toString());

    }

o1 - o2:[1, 1, 2, 3, 4, 5, 7]
o2 - o1:[7, 5, 4, 3, 2, 1,1]

二:(Object)o1在前,o2在後是正序,o1在後,o2在前是倒序

@Data
@Accessors(chain = true)
public class Person {

    private String name;
    private Integer age;
    private String idCard;
}
 public static void main(String[] args) {
        List<Person> peoples = new ArrayList<Person>() {{
            add(new Person().setName("張三").setAge(24));
            add(new Person().setName("李四").setAge(30));
            add(new Person().setName("王五").setAge(18));
            add(new Person().setName("黃七").setAge(10));
        }};

        /**o1在前,o2在後是正序,o1在後,o2在前是倒序 */
        List<Person> list = peoples.stream().sorted(new Comparator<Person>() {
            @Override
            public int compare(Person o1, Person o2) {
                return o1.getAge() - o2.getAge();
            }
        }).collect(Collectors.toList());

        System.err.println(list.toString());

    }

o1.getAge() - o2.getAge():[Person(name=黃七, age=10, idCard=null), Person(name=王五, age=18, idCard=null), Person(name=張三, age=24, idCard=null), Person(name=李四, age=30, idCard=null)]
o2.getAge() - o1.getAge():[Person(name=李四, age=30, idCard=null), Person(name=張三, age=24, idCard=null), Person(name=王五, age=18, idCard=null), Person(name=黃七, age=10, idCard=null)]

三:(Map的java8處理方式)o1在前,o2在後是正序,o1在後,o2在前是倒序

public static void main(String[] args) {
        List<Map<String,Object>> maps = new ArrayList<Map<String,Object>>() {{
            add(new HashMap<String,Object>(){{
                put("age",22);
                put("name","張三");
            }});
            add(new HashMap<String,Object>(){{
                put("age",35);
                put("name","李四");
            }});
            add(new HashMap<String,Object>(){{
                put("age",17);
                put("name","王五");
            }});
            add(new HashMap<String,Object>(){{
                put("age",10);
                put("name","黃七");
            }});
        }};

        /**o1在前,o2在後是正序,o1在後,o2在前是倒序 */
        List<Map<String,Object>> list = maps.stream().sorted(new Comparator<Map<String,Object>>() {
            @Override
            public int compare(Map o1, Map o2) {
                return (Integer) o1.get("age") - (Integer)o2.get("age");
            }
        }).collect(Collectors.toList());

        System.err.println(list.toString());

    }

(Integer) o1.get("age") - (Integer)o2.get("age"):[{name=黃七, age=10}, {name=王五, age=17}, {name=張三, age=22}, {name=李四, age=35}]
(Integer) o2.get("age") - (Integer)o1.get("age"):[{name=李四, age=35}, {name=張三, age=22}, {name=王五, age=17}, {name=黃七, age=10}]

四:(Collections的list<Map<String,Object>>中Integer的排序)

 public static void main(String[] args) {
        List<Map<String,Object>> maps = new ArrayList<Map<String,Object>>() {{
            add(new HashMap<String,Object>(){{
                put("age",22);
                put("name","張三");
            }});
            add(new HashMap<String,Object>(){{
                put("age",35);
                put("name","李四");
            }});
            add(new HashMap<String,Object>(){{
                put("age",17);
                put("name","王五");
            }});
            add(new HashMap<String,Object>(){{
                put("age",10);
                put("name","黃七");
            }});
        }};

        /**o1在前,o2在後是正序,o1在後,o2在前是倒序 */
       Collections.sort(maps, new Comparator<Map<String, Object>>() {
           @Override
           public int compare(Map<String, Object> o1, Map<String, Object> o2) {
               return (Integer) o1.get("age")-(Integer)o2.get("age");
           }
       });

        System.err.println(maps.toString());

    }

(Integer) o1.get("age") - (Integer)o2.get("age"):[{name=黃七, age=10}, {name=王五, age=17}, {name=張三, age=22}, {name=李四, age=35}]
(Integer) o2.get("age") - (Integer)o1.get("age"):[{name=李四, age=35}, {name=張三, age=22}, {name=王五, age=17}, {name=黃七, age=10}]

五:Collections對list<Map<String,Object>>中的String類型日期的排序

 public static void main(String[] args) {
        List<Map<String,Object>> maps = new ArrayList<Map<String,Object>>() {{
            add(new HashMap<String,Object>(){{
                put("age",22);
                put("name","張三");
                put("date","2020-01-30");
            }});
            add(new HashMap<String,Object>(){{
                put("age",35);
                put("name","李四");
                put("date","2020-01-18");
            }});
            add(new HashMap<String,Object>(){{
                put("age",17);
                put("name","王五");
                put("date","2020-01-15");
            }});
            add(new HashMap<String,Object>(){{
                put("age",10);
                put("name","黃七");
                put("date","2020-01-21");
            }});
        }};

        /**o1在前,o2在後是正序,o1在後,o2在前是倒序 */
       Collections.sort(maps, new Comparator<Map<String, Object>>() {
           @Override
           public int compare(Map<String, Object> o1, Map<String, Object> o2) {
               String date1 = (String) o1.get("date");
               String date2 = (String) o2.get("date");
               return date2.compareTo(date1);
           }
       });

        System.err.println(maps.toString());

    }


date2.compareTo(date1):[{date=2020-01-30, name=張三, age=22}, {date=2020-01-21, name=黃七, age=10}, {date=2020-01-18, name=李四, age=35}, {date=2020-01-15, name=王五, age=17}]
date1.compareTo(date2);:[{date=2020-01-15, name=王五, age=17}, {date=2020-01-18, name=李四, age=35}, {date=2020-01-21, name=黃七, age=10}, {date=2020-01-30, name=張三, age=22}]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章