java map排序遍历,map根据key排序方法 java

  java map排序遍历,map根据key排序方法 java

  是一个map键值对的集合接口,其实现类主要有:HashMap、TreeMap、Hashtable、LinkedHashMap等。这四者之间的区别如下(简要介绍):

  HashMap:我们最常用的Map,它根据key的HashCode值存储数据,根据key可以直接得到它的值。同时访问速度快。HashMap最多只允许一条记录的键值为Null(多条记录会被覆盖);多条记录的值允许为空。异步。

  TreeMap:它可以根据关键字对存储在其中的记录进行排序。默认情况下,它按升序排序。您还可以指定排序比较器。用迭代器遍历TreeMap时,得到的记录是乱序的。TreeMap不允许key的值为null。异步。

  Hashtable:类似于HashMap,只是key和value的值不允许为null它支持线程的同步,即任何时候只有一个线程可以写Hashtable,这也导致了Hashtable写的很慢。

  LinkedHashMap:保存记录的插入顺序。当迭代器遍历LinkedHashMap时,必须首先插入第一条记录。遍历的时候会比HashMap慢。和keyvalue允许为空且不同步。

  在线学习课程分享:java课程

  Map排序TreeMap

  默认情况下,TreeMap按升序排列。如果我们需要改变排序模式,我们需要使用Comparator: comparator。

  Comparator是一个比较器接口,可以对集合对象或数组进行排序。这个接口的public compare(T o1,To2)方法可以实现排序。该方法主要根据第一个参数o1返回负整数、0或正整数,分别小于、等于或大于o2。如下所示:

  公共类TreeMapTest {

  公共静态void main(String[] args) {

  MapString,String map=new TreeMapString,String(

  新比较字符串(){

  public int compare(String obj1,String obj2) {

  //按降序排序

  返回obj 2 . compare to(obj 1);

  }

  });

  map.put(c , ccccc );

  map.put(a , aaaaa );

  map.put(b , bbbbb );

  map.put(d , ddddd );

  SetString keySet=map . keySet();

  iterator string ITER=keyset . iterator();

  while (iter.hasNext()) {

  string key=ITER . next();

  system . out . println(key): map . get(key));

  }

  }

  }运行结果如下:

  如何解决写爬虫IP受阻的问题?立即使用。

  上面的例子按照TreeMap的键值进行排序,但是有时候我们需要按照TreeMap的值进行排序。要对值进行排序,我们需要使用sort(ListT list,Comparator?Super c)方法,该方法根据指定比较器生成的顺序对指定列表进行排序。

  但是有一个前提条件,即所有元素必须能够根据所提供的比较器进行比较。如下所示:

  公共类TreeMapTest {

  公共静态void main(String[] args) {

  MapString,String map=new TreeMapString,String();

  map.put(d , ddddd );

  map.put(b , bbbbb );

  map.put(a , aaaaa );

  map.put(c , ccccc );

  //在这里,map.entrySet()被转换成一个列表

  列表地图。EntryString,String list=new ArrayListMap。EntryString,String(map . entry set());

  //然后按比较器排序。

  Collections.sort(list,new ComparatorMap。EntryString,String() {

  //按升序排序

  public int compare(EntryString,String o1,

  EntryString,String o2) {

  返回o1.getValue()。compare to(O2 . getvalue());

  }

  });

  对于(图。EntryString,字符串映射:list){

  system . out . println(mapping . getkey(): mapping . getvalue());

  }

  }

  }运行结果

  HashMap

  我们都是HashMap的值是没有顺序的,他是按照key的HashCode实现的。如何才能对这种无序的散列表进行排序呢?参考TreeMap的值排序,我们也可以对HashMap进行排序。

  公共类HashMapTest {

  公共静态void main(String[] args) {

  MapString,String map=new HashMapString,String();

  map.put(c , ccccc );

  map.put(a , aaaaa );

  map.put(b , bbbbb );

  map.put(d , ddddd );

  列表地图EntryString,String list=new ArrayListMap .EntryString,String(map。entry set());

  Collections.sort(list,new ComparatorMap .EntryString,String() {

  //升序排序

  public int compare(EntryString,String o1,

  EntryString,String o2) {

  返回o1.getValue().与O2相比。getvalue());

  }

  });

  对于(图EntryString,字符串映射:列表){

  系统。出去。println(映射。getkey():映射。getvalue());

  }

  }

  }运行结果:

  更多相关文章教程推荐:java入门以上就是爪哇岛中地图排序的实现的详细内容,更多请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

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