通过按值排序映射获取空值



当我试图获得键与排序值匹配时,我正在获得null

public class Linked_L {
static Map<String, Integer> map = new HashMap<>();
public static void sortbyValue(){
ArrayList<Integer> sortedValues = new ArrayList<>(map.values());
Collections.sort(sortedValues);
for (Integer y: sortedValues)
System.out.println("Key = " +map.get(y) + ", Value = " + y);
}
public static void main(String args[])
{
// putting values in the Map
map.put("Jayant", 80);
map.put("Abhishek", 90);
map.put("Anushka", 80);
map.put("Amit", 75);
map.put("Danish", 40);
// Calling the function to sortbyKey
sortbyValue();
}

结果:

Key = null, Value = 40
Key = null, Value = 75
Key = null, Value = 80
Key = null, Value = 80
Key = null, Value = 90

此处:

map.get(y)

y是地图的一个值,但还记得get的作用吗?它接受映射的,并给出与该键相关联的,而不是!

你应该对映射条目(即键值对)它们的值排序,而不是取出所有值,忽略所有键。这样,您就可以在循环中轻松获得每对密钥。

ArrayList<Map.Entry<String, Integer>> sortedEntries = new ArrayList<>(map.entrySet());
Collections.sort(sortedEntries, Comparator.comparing(Map.Entry::getValue));
for (var entry: sortedEntries) {
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}

您的map存储字符串作为其键。你从它得到整数值,它当然返回null~

相关内容

  • 没有找到相关文章

最新更新