如何使用键降序对哈希映射进行排序。请举例说明。 以及对哈希映射进行排序的方法有多少。 请详细说明
答案 0 :(得分:12)
HashMap
不支持排序。它们根据键的hashCode
值将条目存储在存储桶中,它们如何看待它是否合适。它们适用于存储事物并在事后查找它们,但不适合迭代它们的内容(这是你显然想做的事情),因为你不能依赖它们的顺序并且迭代它通常很昂贵。
请尝试使用TreeMap
。您可以指定一个自定义比较器,它只执行默认比较器的反转。在这种情况下,您的参赛作品将以降序顺序排序。 Collections.reverseOrder
会为你创建一个比较器,你可以像这样使用它:
new TreeMap<Integer, String>(Collections.reverseOrder());
答案 1 :(得分:3)
实现此目的的两种方法:
使用 HashMap
.third {
position: relative;
z-index: 100;
width: 100%;
background-color: #F7F7F7;
}
.basic-container {
width: 70%;
margin: 0 auto;
text-align: justify;
}
.contact {
position: relative;
width: 49%;
height: 0;
display: inline-block;
padding-bottom: 60%;
}
.contact p.lead {
text-align: left;
}
#map {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%
}
使用树形图,编写自己的public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("A", 34);
map.put("B", 25);
map.put("C", 50);
map.put("D", 50); // "duplicate" value
System.out.println(entriesSortedByValues(map));
}
static <K, V extends Comparable<? super V>> List<Entry<String, Integer>> entriesSortedByValues(Map<String, Integer> map) {
List<Entry<String, Integer>> sortedEntries = new ArrayList<Entry<String, Integer>>(map.entrySet());
Collections.sort(sortedEntries, new Comparator<Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> e1, Entry<String, Integer> e2) {
return e2.getKey().compareTo(e1.getKey());
}
});
return sortedEntries;
}
Comparator
答案 2 :(得分:3)
我建议使用Java 8中包含的此方法。
List<Map.Entry<String, Integer>> sorted_map =
map_1.entrySet()
.stream()
.sorted(reverseOrder(Map.Entry.comparingByKey()))
.collect(Collectors.toList());
此处'map_1'是您要排序的地图。
现在您可以使用sorted_map变量进行迭代并用于您的目的。
请务必:
import static java.util.Collections.reverseOrder;
答案 3 :(得分:0)
试试此代码
public class MapUsingSort {
public static void main(String[] args) {
Map<Integer, String> abc = new HashMap<>();
abc.put(3, "a");
abc.put(6, "b");
abc.put(1, "c");
abc.put(4, "h");
abc.put(10, "k");
abc.put(9, "x");
// Map is stored in ArrayList
List<Entry<Integer,String>> sortedEntries = new
ArrayList<Entry<Integer,String>>(abc.entrySet());
Collections.sort(sortedEntries, new Comparator<Entry<Integer,String>>() {
@Override
public int compare(Entry<Integer, String> a, Entry<Integer, String> b)
{
//Sorting is done here make changes as per your need
// swap a and b for descending order in return statement
return a.getKey().compareTo(b.getKey());
}
});
for (Object object : sortedEntries) {
//print your data in your own way
System.out.println((Map.Entry)object);
}
}
}
答案 4 :(得分:-2)
SELECT
field1,
field2,
field3
FROM
table1
AND
table2
WHERE
condition;