如何在 Java 中按键对 HashMap 进行排序
我们看到了
如何按值对 HashMap 进行排序. 在本教程中,您将了解如何使用 TreeMap 类按键对项目进行排序。我们知道 HashMap 默认不保留元素的插入顺序。在 java 中,Map 或 HashMap 都可以按键或值排序。
1- 使用 TreeMap
此代码按键对 HashMap 进行排序,并且基于 TreeMap.
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
导入 java.util.Set;
导入 java.util.TreeMap;
public class Triclés {
public static void main(String[] args) {
Map<字符串,字符串>hmap = 新 HashMap<字符串,字符串>();
hmap.put(4”, 四”);
hmap.put(2”, 二”);
hmap.put(3”, 三”);
hmap.put(1”, 一”);
Set set = hmap.entrySet();
迭代器 迭代器 = set.iterator();
System.out.println(排序前:”);
while(iterator.hasNext()) {
Map.Entry me = (Map.Entry)iterator.next();
System.out.print(me.getKey() + : ”);
System.out.println(me.getValue());
}
Map sortedMap = new TreeMap(hmap);
设置 set2 = sortedMap.entrySet();
迭代器 iterator2 = set2.iterator();
System.out.println(排序后:”);
while(iterator2.hasNext()) {
Map.Entry me2 = (Map.Entry)iterator2.next();
System.out.print(me2.getKey() + : ”);
System.out.println(me2.getValue());
}
}
}
输出:
排序前:
3: three
2: two
1: one
4: four
排序后:
1: one
2: two
3: three
4: four
2- 使用 Comparator 或 Comparable
对 HashMap 进行排序,您还可以通过将键复制到实现接口的列表中来对 Map 进行排序
java.util.List,然后通过调用
Collections.sort()。在这里,您可以使用两个排序接口:
Comparator 或
可比跨度> ,然后选择要显示的升序或降序。创建键列表后,您可以将键和值复制到新的 HashMap.
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
导入 java.util.LinkedList;
import java.util.List;
import java.util.Map;
public class Triclés {
public static HashMap<字符串,字符串>sortHashMap(地图<字符串,字符串>hmap){
列表<地图条目<字符串,字符串>>list =
new LinkedList<地图条目<字符串,字符串>>( hmap.entrySet() );
Collections.sort( 列表,新比较器<地图条目<字符串,字符串>>(){
public int compare
(Map.Entry<字符串,字符串>o1,Map.Entry<字符串,字符串>o2 )
{
//比较两个键
return (o1.getKey()).compareTo( o2.getKey() );
}
});
//从 LinkedList
HashMap 创建新的 HashMap<字符串,字符串>hmapTriee = 新的 LinkedHashMap<字符串,字符串>();
表示 (Map.Entry<字符串,字符串>条目 : list)
{
hmapTriee.put( entry.getKey(), entry.getValue() );
}
返回 hmapTriee;
}
public static void main(String[] args) {
final HashMap<字符串,字符串>hmap = 新 HashMap<字符串,字符串>();
hmap.put(4”, 四”);
hmap.put(2”, 二”);
hmap.put(3”, 三”);
hmap.put(1”, 一”);
System.out.println(排序前:”+ hmap);
System.out.println(排序后:”+sortHashMap(hmap));
}
}
输出:
排序前:{3=three, 2=two, 1=one, 4=four}
排序后:{1=one, 2=two, 3=three, 4=four}