相关疑难解决方法(0)

按值对地图<键,值>进行排序

我是Java的新手,经常发现我需要对Map<Key, Value>值进行排序.

由于值不是唯一的,我发现自己将其转换keySet为a array,并通过数组排序对该数组进行排序,并使用自定义比较器对与键关联的值进行排序.

有没有更简单的方法?

java sorting collections dictionary

1569
推荐指数
27
解决办法
134万
查看次数

Comparator.reversed()不使用lambda进行编译

我有一个包含一些User对象的列表,我正在尝试对列表进行排序,但只能使用方法引用,使用lambda表达式,编译器会给出错误:

List<User> userList = Arrays.asList(u1, u2, u3);
userList.sort(Comparator.comparing(u -> u.getName())); // works
userList.sort(Comparator.comparing(User::getName).reversed()); // works
userList.sort(Comparator.comparing(u -> u.getName()).reversed()); // Compiler error
Run Code Online (Sandbox Code Playgroud)

错误:

com\java8\collectionapi\CollectionTest.java:35: error: cannot find symbol
            userList.sort(Comparator.comparing(u -> u.getName()).reversed());
                                                     ^
symbol:   method getName()
location: variable u of type Object
1 error
Run Code Online (Sandbox Code Playgroud)

java lambda java-8 method-reference

101
推荐指数
3
解决办法
2万
查看次数

Java 8流映射到按值排序的键列表

我有地图Map<Type, Long> countByType,我希望有一个列表,它按相应的值排序(最小到最大)键.我的尝试是:

countByType.entrySet().stream().sorted().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

但是这只是给我一个条目列表,如何在不丢失订单的情况下获得类型列表?

java collections lambda java-8 java-stream

57
推荐指数
3
解决办法
10万
查看次数

在Java中,我需要根据其值的基础对哈希映射的键进行分组

我需要找到topN键.

我有一个输入作为HashMap的形式为(键:值):

Banana : 13  
Apple: 12  
Mango : 32  
Orange : 12  
Grape : 18  
Pear : 12  
Peach : 18  
Run Code Online (Sandbox Code Playgroud)

我创建了一个链接的HapMap,它根据值排序:

private static <K extends Comparable, V extends Comparable> Map<K, V> sortByValues(Map<K, V> map) {
    List<Map.Entry<K, V>> entries = new LinkedList<Map.Entry<K, V>>(map.entrySet());

    Collections.sort(entries, new Comparator<Map.Entry<K, V>>() {

        @Override
        public int compare(Map.Entry<K, V> o1, Map.Entry<K, V> o2) {
            return o2.getValue().compareTo(o1.getValue());
        }
    });
    Map<K, V> sortedMap = new LinkedHashMap<K, V>();
    for (Map.Entry<K, V> entry : entries) {
        sortedMap.put(entry.getKey(), entry.getValue());
    } …
Run Code Online (Sandbox Code Playgroud)

java sorting grouping arraylist top-n

4
推荐指数
1
解决办法
1752
查看次数