相关疑难解决方法(0)

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

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

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

有没有更简单的方法?

java sorting collections dictionary

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

对LinkedHashMap进行排序

如果LinkedHashMap包含String和Integer,我如何根据其值对LinkedHashMap进行排序.所以我需要根据整数值对它进行排序.非常感谢

java linkedhashmap

40
推荐指数
2
解决办法
6万
查看次数

Java如何根据HashMap中的值返回前10个项目

所以我是Java的新手,因此我正在通过练习,将我的一个Python程序转换为Java.

我遇到了一个问题,我试图复制行为,从python下面将只返回排序的键(按值),而不是值:

popular_numbers = sorted(number_dict, key = number_dict.get, reverse = True)
Run Code Online (Sandbox Code Playgroud)

在Java中,我做了一些研究,还没有找到一个简单的样本用于n00b,例如我自己或类似的方法.我找到了使用Guava进行排序的示例,但排序似乎返回按键排序的HashMap.

除了上述之外,我在Java中没有找到的关于Python的其他好处之一是能够轻松返回已排序值的子集.在Python中,我可以简单地执行以下操作:

print "Top 10 Numbers: %s" % popular_numbers[:10]
Run Code Online (Sandbox Code Playgroud)

在此示例中,number_dict是键值对的字典,其中键表示数字1..100,值是数字(键)出现的次数:

for n in numbers:
 if not n == '':
   number_dict[n] += 1
Run Code Online (Sandbox Code Playgroud)

最终结果将是这样的:

十大数字:['27','11','5','8','16','25','1','24','32','20']

为了澄清,在Java中我成功创建了一个HashMap,我已经成功检查了数字并增加了键值对的值.我现在陷入了排序并根据值返回前10个数字(键).

java sorting

13
推荐指数
2
解决办法
1万
查看次数

Java的Counter Counter替代品

我一直在使用Python中的Counter()数据结构作为键值存储,允许我使用most_common方法根据其值对对象进行排序.更多信息在这里.

Java语言是否有类似的数据结构?例如,我已经看到许多相关的答案专注于通过数据结构对HashMapsTreeMaps进行排序,最初并未为此目的定义.在我的情况下,我通常需要保留对象的计数器,然后选择最常见的或具有最高分数的那些(前N个查询).但是,我很难,因为我需要插入HashMap然后排序或使用多个数据结构.

python java sorting data-structures

9
推荐指数
2
解决办法
2548
查看次数

如何按升序对HashMap进行排序

我有以下密钥:值对.

A56:A64=9, A65:A73=9, A2:A8=7, A49:A55=7, A20:A26=7, A9:A19=11, A43:A48=6, A27:A42=16
Run Code Online (Sandbox Code Playgroud)

我想按升序排序.我试过用a TreeMap但得到了这个:

{A20:A26=7, A27:A42=16, A2:A8=7, A43:A48=6, A49:A55=7, A56:A64=9, A65:A73=9, A9:A19=11}
Run Code Online (Sandbox Code Playgroud)

A2:A8 = 7应该是第一个,但它是第三个.

请让我知道如何解决这个问题.

java hashmap treemap

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

JAVA:查找存储在hashMap中的对象的最佳性能方法

我有一堆对象存储在hashMap<Long,Person>我需要找到具有特定属性的person对象而不知道它的ID.

例如人类:

public person{
    long id;
    String firstName;
    String lastName;
    String userName;
    String password;
    String address;
    ..
   (around 7-10 attributes in total)
    }
Run Code Online (Sandbox Code Playgroud)

假设我想找到username ="mike"的对象.是否有任何方法可以找到它而不实际迭代整个哈希映射,如下所示:

for (Map.Entry<Long,Person> entry : map.entrySet()) {
        if(entry.getValue().getUserName().equalsIgnoreCase("mike"));
Run Code Online (Sandbox Code Playgroud)

我在这里找到的答案很古老.

java hashmap

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

在Java中对ArrayList <List>进行排序

我有一个ArrayList<List>List■找持有一个名称字符串值,然后双转换为字符串.

例:

List<String> list = New List; 
list.add("Abraham");
list.add(String.valueOf(0.65));

List<String> list2 = New List; 
list2.add("Bowers");
list2.add(String.valueOf(0.89));

ArrayList<List> arrayList = new ArrayList<>();
arrayList.add(list); 
arrayList.add(list2); 
Run Code Online (Sandbox Code Playgroud)

如何ArrayList按双精度值的降序排序?

java arraylist

3
推荐指数
1
解决办法
78
查看次数

java arraylist HashMap如何排序?

如何排序数组?

之前

{"A"=1, "B"=1, "C"=3}, 
{"A"=1, "B"=1, "C"=2},
{"A"=1, "B"=11, "C"=2},
{"A"=1, "B"=2, "C"=2},
{"A"=1, "B"=1, "C"=11}
Run Code Online (Sandbox Code Playgroud)

{"A"=1, "B"=1, "C"=2},
{"A"=1, "B"=1, "C"=3},
{"A"=1, "B"=1, "C"=11},
{"A"=1, "B"=2, "C"=2}, 
{"A"=1, "B"=11, "C"=2}
Run Code Online (Sandbox Code Playgroud)

    ArrayList mylist = new ArrayList();

    Map<String,Integer> mMap = new HashMap<String,Integer>();
    mMap.put("A",1);
    mMap.put("B",1);
    mMap.put("C",3);
    mylist.add(mMap); 

    mMap = new HashMap<String,Integer>();
    mMap.put("A",1);
    mMap.put("B",1);
    mMap.put("C",2);
    mylist.add(mMap); 

    mMap = new HashMap<String,Integer>();
    mMap.put("A",1);
    mMap.put("B",11);
    mMap.put("C",2);
    mylist.add(mMap);

    mMap = new HashMap<String,Integer>();
    mMap.put("A",1);
    mMap.put("B",2);
    mMap.put("C",2);
    mylist.add(mMap);

    mMap = new HashMap<String,Integer>();
    mMap.put("A",1);
    mMap.put("B",1);
    mMap.put("C",11);       
    mylist.add(mMap);
Run Code Online (Sandbox Code Playgroud)

java arraylist hashmap map

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

在Java中按键排序HashMap的最佳方法?

这是我第一次HashMap在Java中订购.我需要通过密钥来做到这一点,但在我的情况下,密钥是一个对象,所以我需要按特定字段排序.试图通过我自己来计算它我已经考虑继续这个简单的代码划痕:

private HashMap<SimpleDBField, String> sortTable(HashMap<SimpleDBField, String> row){

    LinkedHashMap<SimpleDBField, String> orderedRow = new LinkedHashMap<SimpleDBField, String>();

    for(int i = 1; i <= row.size(); i ++){
        Iterator iterator = row.entrySet().iterator();

        while(iterator.hasNext()){
            Map.Entry<SimpleDBField, String> entry = (Map.Entry<SimpleDBField, String>) iterator.next();

            if(entry.getKey().getListPosition()==i){
                orderedRow.put(entry.getKey(), entry.getValue());
                break;
            }
        }
    }

    return orderedRow;
}
Run Code Online (Sandbox Code Playgroud)

假设它有效并且我不关心性能,在真正使用它之前,我想知道下一个代码划痕是否更好,最重要:为什么?

下面的示例源代码:如何按Java中的键和值对HashMap进行排序

public static <K extends Comparable,V extends Comparable> Map<K,V> sortByKeys(Map<K,V> map){

    List<K> keys = new LinkedList<K>(map.keySet());

    Collections.sort(keys);

    Map<K,V> sortedMap = new LinkedHashMap<K,V>();

    for(K key: keys){
        sortedMap.put(key, map.get(key));

    }

    return sortedMap;
} …
Run Code Online (Sandbox Code Playgroud)

java sorting hashmap comparable linkedhashmap

1
推荐指数
2
解决办法
5359
查看次数

如何对hashmap进行排序

我有这个hashmap:

       HashMap<String, ArrayList<String>> allhotels = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

我想按字母顺序对每个Arraylist中的所有值进行排序.这是我目前的方法:

public void sortHotels() {

    for(int i = 0; i < allhotels.size(); i++) {

        Collections.sort(allhotels.values().toArray(), String.CASE_INSENSITIVE_ORDER);
    }

}
Run Code Online (Sandbox Code Playgroud)

我想在ArrayList中为hashmap中的每个条目排序字符串.

java hashmap

-1
推荐指数
1
解决办法
98
查看次数