最近在研究HashMap的原理,突然想起了怎么样对HashMap进行排序,以下是实现的具体代码:
第一种:
package com.test.zyy.review;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class IteratorOfHashMapSequence implements Comparator<String>{
public static void main(String[] args) {
//声明一个map集合
Map<String,String> testmap = new HashMap<String, String>();
//将map集合中存值
testmap.put("p1", "value1");
testmap.put("p4", "value2");
testmap.put("p2", "value5");
testmap.put("p3", "value0");
//用map中的keySet方法将key放入set集合当中
Set<String> keySet = testmap.keySet();
//定义一个list将keyset放入list中,因为Collections中排序的方法是sort,支持的类型是list,所以这里要用到list
List<String> testlist = new ArrayList<String>(keySet);
//使用Collections的方法sort进行排序
Collections.sort(testlist, new IteratorOfHashMapSequence());
//获取list集合的迭代器,String为迭代元素的类型
Iterator<String> iterator = testlist.iterator();
while(iterator.hasNext()){
//获取到ley
String key = iterator.next();
//获取value
String values = testmap.get(key);
System.out.println("key是:"+key+" "+"value是:"+values);
}
}
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
}
第二种:
package com.test.zyy.review;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
public class IteratorOfHashMapSequeuce1 implements Comparator<Entry<String,String>>{
public static void main(String[] args) {
//声明一个map集合
Map<String,String> testmap = new HashMap<String, String>();
//将map集合中存值
testmap.put("p1", "value1");
testmap.put("p4", "value2");
testmap.put("p2", "value5");
testmap.put("p3", "value0");
//获取map中的映射集合,这里entryset存的是键与值的映射
Set<Entry<String,String>> entrySet = testmap.entrySet();
//将set集合中的所有元素放入list集合当中,为后续的排序做铺垫
List<Entry<String,String>> testlist = new ArrayList<Entry<String,String>>(entrySet);
//使用sort方法进行排序
Collections.sort(testlist, new IteratorOfHashMapSequeuce1());
//获取list集合的迭代器,String为迭代元素的类型
Iterator<Entry<String, String>> iterator = testlist.iterator();
while(iterator.hasNext()){
Entry<String, String> next = iterator.next();
String key = next.getKey();
String value = next.getValue();
System.out.println("key是:"+key+" "+"value是:"+value);
}
}
public int compare(Entry<String, String> o1, Entry<String, String> o2) {
return o2.getKey().compareTo(o1.getKey());
}
}
希望这篇分享能够帮助到大家,有什么不对的,可以纠正一下。