我是Java的新手,经常发现我需要对Map<Key, Value>值进行排序.
由于值不是唯一的,我发现自己将其转换keySet为a array,并通过数组排序对该数组进行排序,并使用自定义比较器对与键关联的值进行排序.
有没有更简单的方法?
如果LinkedHashMap包含String和Integer,我如何根据其值对LinkedHashMap进行排序.所以我需要根据整数值对它进行排序.非常感谢
所以我是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个数字(键).
我有以下密钥:值对.
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应该是第一个,但它是第三个.
请让我知道如何解决这个问题.
我有一堆对象存储在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)
我在这里找到的答案很古老.
我有一个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按双精度值的降序排序?
如何排序数组?
{"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) 这是我第一次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) 我有这个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 ×10
hashmap ×5
sorting ×4
arraylist ×2
collections ×1
comparable ×1
dictionary ×1
map ×1
python ×1
treemap ×1