map通过key排序,map集合如何根据key进行排序_1

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: