美文网首页java lambda
lambda HashMap 排序

lambda HashMap 排序

作者: spraysss | 来源:发表于2019-01-29 16:49 被阅读0次

TreeMap

  • 按key排序生成map可以有TreeMap 完成,TreeMap可以按key的自然顺序排序(Comparable实现)

lambda comparingByKey

使用lambda也可以很方便的对map排序

  • Map.Entry.comparingByKey() 按key排序的Comparator
  • Map.Entry.comparingByValue()按value排序的Comparator
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Collectors;

public class MapSortDemo {
    public static void main(String[] args) {
        User user1 = new User("zs", 10);
        User user2 = new User("ls", 5);
        User user3 = new User("wu", 20);
        Map<String, User> map = new HashMap<>();
        map.put(user1.getName(), user1);
        map.put(user2.getName(), user2);
        map.put(user3.getName(), user3);

        System.out.println("------map sort by key------");
        map.entrySet().
                stream().
                sorted(Map.Entry.comparingByKey()).
                forEach(System.out::println);

        System.out.println("------map sort by value------");
        map.entrySet().
                stream().
                sorted(Map.Entry.comparingByValue()).
                forEach(System.out::println);


        System.out.println("------return sorted by key map ------");
        TreeMap<String,User> treeMap=new TreeMap<>(map);
        System.out.println(treeMap);

        System.out.println("------return sorted by value map ------");
        Map<String, User> result = map.entrySet()
                .stream()
                .sorted(Map.Entry.comparingByValue())
                .collect(Collectors.toMap(
                        Map.Entry::getKey,
                        Map.Entry::getValue,
                        (oldValue, newValue) -> oldValue, LinkedHashMap::new));
        System.out.println(result);
    }

}

class User implements Comparable<User> {
    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public int compareTo(User o) {
        return this.getAge() - o.getAge();
    }

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

output

------map sort by key------
ls=User{name='ls', age=5}
wu=User{name='wu', age=20}
zs=User{name='zs', age=10}
------map sort by value------
ls=User{name='ls', age=5}
zs=User{name='zs', age=10}
wu=User{name='wu', age=20}
------return sorted by key map ------
{ls=User{name='ls', age=5}, wu=User{name='wu', age=20}, zs=User{name='zs', age=10}}
------return sorted by value map ------
{ls=User{name='ls', age=5}, zs=User{name='zs', age=10}, wu=User{name='wu', age=20}}

相关文章

  • lambda HashMap 排序

    TreeMap 按key排序生成map可以有TreeMap 完成,TreeMap可以按key的自然顺序排序(Com...

  • scala ArrayList[hashMap]中根据hash

    scala ArrayList[hashMap]中根据hashMap某个value值排序 我这里是以HashMap...

  • HashMap排序

    JAVA

  • HashMap排序

  • HashMap排序

    public static void main(String[] args) { Map map =...

  • Java集合面试题

    1、HashMap排序题 已知一个 HashMap 集合, User 有 name(String)和 age(in...

  • Java 排序

    概述 ​对Java对数组对象进行排序,Java对排序问题的处理。Java排序一般包括基础排序和Lambda Com...

  • LinkedHashMap用法

    LinkedHashMap继承于HashMap,保证key有序。在LinkedHashMap支持2种排序,插入排序...

  • Java HashMap的常用方法

    HashMap在需要计数器时非常有用。 1. 循环HashMap 2. Print HashMap 3.按值排序H...

  • 初识Lambda

    什么是Lambda?Lambda是λ,希腊字母表中排序第十一位的字母。当你在使用IDEA书写Lambda表达式的时...

网友评论

    本文标题:lambda HashMap 排序

    本文链接:https://www.haomeiwen.com/subject/vvprjqtx.html