lamda -- 排序

LamadSort.java

package com.example.demo.util;

import com.example.demo.entity.User;

import java.util.*;
import java.util.stream.Collectors;

public class LamadSort{
    public static void main(String[] args) {
        System.out.println("list集合:");
        test1();

        System.out.println("\nmap按ASCII排序:");
        test2();

        System.out.println("\n對象屬性:");
        test3();

        System.out.println("\n數組:");
        test4();
    }

    /**
     * 排序 -- list集合
     */
    public static void test1() {
        //1. 初始化數據
        List<User> users = new ArrayList<User>();
        User u1 = new User(2, "劉德華");
        User u2 = new User(3, "彭于晏");
        User u3 = new User(1, "林峯");
        users.add(u1);
        users.add(u2);
        users.add(u3);

        //2. 排序 -- 方式一
        //Collections.sort(users, Comparator.comparing(User::getId));

        // 排序 -- 方式二
        Collections.sort(users, (uer1, uer2) -> uer1.getId().compareTo(uer2.getId()));

        //3. 輸出
        users.forEach(user -> {
            System.out.println("id = " + user.getId() + ",name = " + user.getName());
        });
    }

    /**
     * 排序 -- map按ASCII排序
     */
    public static void test2() {
        //1. 初始化數據
        Map<String, Integer> map = new HashMap();
        map.put("key1",10);
        map.put("key2",13);
        map.put("key3",11);
        map.put("key4",14);
        map.put("key5",12);

        //2. 排序
        map = map.entrySet()
                .stream()
                .sorted(Map.Entry.<String, Integer>comparingByValue())
                .collect(Collectors.toMap(k -> k.getKey(), v -> v.getValue(),
                        (k, v) -> k, LinkedHashMap::new));

        //3. 輸出
        map.forEach((key, value) -> {
            System.out.println("Key: " + key + ", Value: " + value);
        });
    }

    /**
     * 排序 -- 對象屬性
     */
    public static void test3() {
        //1. 初始化數據
        List<User> users = new ArrayList<User>();
        User u1 = new User(2, "劉德華");
        User u2 = new User(3, "彭于晏");
        User u3 = new User(1, "林峯");
        users.add(u1);
        users.add(u2);
        users.add(u3);

        System.out.println("------------升序---------------");
        //2. 升序
        List<User> userAscList = users.stream().sorted(Comparator.comparing(User::getId))
                .collect(Collectors.toList());

        //3. 輸出
        userAscList.forEach(user -> {
            System.out.println("id = " + user.getId() + ",name = " + user.getName());
        });

        System.out.println("------------降序---------------");
        //2. 降序
        List<User> userDescList = users.stream().sorted(Comparator.comparing(User::getId).reversed())
                .collect(Collectors.toList());

        //3. 輸出
        userDescList.forEach(user -> {
            System.out.println("id = " + user.getId() + ",name = " + user.getName());
        });
    }

    /**
     * 排序 -- 數組
     */
    public static void test4(){
        //1. 初始化數據
        String[] datas = {"2016-06-28 08:00:00",
                "2017-12-05 19:17:32",
                "2017-03-06 22:14:51",
                "2016-12-28 08:00:00",
                "2017-03-05 19:17:32",
                "2017-03-06 22:14:51"};

        //2. 排序
        Arrays.sort(datas, (String s1, String s2) -> (s1.compareTo(s2)));

        //3. 輸出
        Arrays.stream(datas).forEach(System.out::println);
    }
}

User.java

package com.example.demo.entity;

public class User {
    private Integer id;
    private String name;

    public User(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

輸出

list集合:
id = 1,name = 林峯
id = 2,name = 劉德華
id = 3,name = 彭于晏

map按ASCII排序:
Key: key1, Value: 10
Key: key3, Value: 11
Key: key5, Value: 12
Key: key2, Value: 13
Key: key4, Value: 14

對象屬性:
------------升序---------------
id = 1,name = 林峯
id = 2,name = 劉德華
id = 3,name = 彭于晏
------------降序---------------
id = 3,name = 彭于晏
id = 2,name = 劉德華
id = 1,name = 林峯

數組:
2016-06-28 08:00:00
2016-12-28 08:00:00
2017-03-05 19:17:32
2017-03-06 22:14:51
2017-03-06 22:14:51
2017-12-05 19:17:32
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章