map通过key排序,map集合如何根据key进行排序
写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用
map可以按key排序吗?
地图可以按键排序,下面通过实例来看看。
示例:Java地图按钥匙排序和按价值排序
包装测试;
导入Java。util。ArrayList
导入Java。util。收藏;
导入Java。util。比较器;
导入Java。util。hashmap
导入Java。util。迭代器;
导入Java。util。链接的散列表;
导入Java。util。列表;
导入Java。util。地图;
导入Java。util。树形图;
导入Java。util。地图。词条;
公共类MapSortDemo {
/**
* @param args
*/
公共静态void main(String[] args) {
MapString,String hMap=new HashMapString,String();
hMap.put(a , 3 );
hMap.put(z , 2 );
hMap.put(b , 6 );
hMap.put(o , 9 );
System.out.println(根据键升序排序);
MapString,String sortByKeyResultMap=sortMapByKey(hMap);//按钥匙进行排序
迭代器地图EntryString,String sort by key entries=sort by key结果映射。条目集().迭代器();
while(sortbykey条目。has next()){
地图EntryString,String entry=sortbykey entries。next();
系统。出去。println( Key=条目。getkey()-Value=条目。getvalue());
}
系统。出去。println(-);
System.out.println(根据价值降序排序);
MapString,String sortByValueResultMap=sortMapByValue(hMap);//按价值进行排序
迭代器地图EntryString,String sortByValueEntries=sortbyvalueresultmap。条目集().迭代器();
while(sortbyvalueentries。has next()){
地图EntryString,String entry=sortbyvalueentries。next();
系统。出去。println( Key=条目。getkey()-Value=条目。getvalue());
}
}
/**
* 使用地图按键进行排序
* @param map
* @返回
*/
public static MapString,String sortMapByKey(MapString,String map) {
if (map==null map.isEmpty()) {
返回空
}
//MapString,String sortMap=new TreeMapString,String(new mapkey comparator());
MapString,String sortMap=new TreeMapString,String(new ComparatorString() {
public int compare(String obj1,String obj2) {
返回obj 1。与(obj 2)比较;//升序排序
}
});
排序映射。putall(地图);
返回排序图
}
/**
* 使用地图按价值进行排序
* @param map
* @返回
*/
公共静态映射字符串,字符串排序映射值(映射字符串,字符串映射){
if (map==null map.isEmpty()) {
返回空
}
MapString,String sorted map=new LinkedHashMapString,String();
列表地图EntryString,String entryList=new ArrayList map .EntryString,String(map。entry set());
//Collections.sort(entryList,new map value comparator());
集合。排序(
条目列表,
新比较地图EntryString,String(){
public int compare(EntryString,String o1,EntryString,String o2) {
返回o2.getValue().比较(O1。getvalue());//降序排序
}
}
);
迭代器地图EntryString,字符串ITER=entrylist。迭代器();
地图EntryString,String tmpEntry=null
while (iter.hasNext()) {
tmpEntry=ITER。next();
sortedMap.put(tmpEntry.getKey()、tmpEntry。getvalue());
}
返回有序映射
}
}java map
地图是键值对的集合接口,它的实现类主要包括:哈希表,树形图,哈希表以及LinkedHashMap等。
地图不允许键(关键)重复,但允许值(值)重复。
1、散列表:
最常用的Map是根据一个键的hashcode值来存储数据,根据键可以直接得到它的值(因为同一个键hashcode值相同,所以可以根据hashcode值所在地址存储的键直接得到值)。它的访问速度很快,遍历时,获取数据的顺序是完全随机的。HashMap最多只允许一条记录的键为null。多条记录的值允许为空。HashMap不支持线程同步,即多个线程可以随时写HashMap,导致数据不一致。如果需要同步,可以使用Synchronize HashMap的方法,使HashMap具有同步的能力,或者使用concurrentHashMap。
2、哈希表:
和HashMap类似,不同的是不允许记录的键或值为空,支持线程同步,即任何时刻只有一个线程可以写HashTable,这也导致HashTable写的比较慢!
3、LinkedHashMap:
是HahsMap的子类,但它保持了记录的插入顺序。遍历时先得到的肯定是先插入的。你也可以在构造的时候取参数,按照应用的数量来排序。然而,有一个例外。当HashMap容量很大,实际数据很少时,遍历会比LinkedHashMap慢(因为是链),因为HashMap的遍历速度与其容量有关。
4、树形图:
实现了sortMap接口,可以对保存的记录按键排序(默认为升序),或者指定一个排序比较器,遍历时得到的数据是乱序的。
推荐:java视频教程以上是Java中的地图。可以按键排序吗?更多详情请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。