`
wusuoya
  • 浏览: 629820 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

SortedMap接口的实现类TreeMap介绍和实现Comparator自定义比较器

    博客分类:
  • Java
 
阅读更多

与SortedSet接口类似,SortedMap也是一个结构,待排序的Map,其一个比较常用的实现类是TreeMap。

TreeMap的put(K key, V value)方法在每添加一个元素时,都会自动排序。

构造方法:
TreeMap()
使用键的自然顺序构造一个新的、空的树映射。
TreeMap(Comparator<? super K> comparator)
构造一个新的、空的树映射,该映射根据给定比较器进行排序。
TreeMap(Map<? extends K,? extends V> m)
构造一个与给定映射具有相同映射关系的新的树映射,该映射根据其键的自然顺序 进行排序。
创建自定义的Comparator比较器:
//这里根据字符的ASCII码大小进行降序排序:
class MyComparator2 implements Comparator<String>{
	@Override
	public int compare(String o1, String o2) {

		return o2.compareTo(o1);
	}
}
在SortedSet中,当保存对象时一定要自定义一个比较器Comparator,但是在SortedMap中,保存对象却不一定要,因为SortedMap是比较Key而不是Value,所以创建的自定义比较器也是针对Key的,比如上面创建的Comparator是针对Key类型为String的Map进行排序。
Map<String, String> map = new TreeMap<String, String>(new MyComparator2());

对于TreeMap的迭代和HashMap一样,同样有三种方法,以下是常用的其中一种:

Set<Map.Entry<Integer, Integer>> set = map.entrySet();
for(Iterator<Map.Entry<Integer, Integer>> iter = set.iterator(); iter.hasNext();){
	Map.Entry<Integer, Integer> entry = iter.next();
	Integer key = entry.getKey();
	Integer value = entry.getValue();
	System.out.println(key + ":" + value);
}

对于Map来说,不能使用Collections的静态方法,但是可以通过他的values方法获取到Collections进行调用:

Collection<Integer> cols = map.values();
Integer max = Collections.max(cols);
分享到:
评论

相关推荐

    SortedMap类

    NULL 博文链接:https://chaoyi.iteye.com/blog/2086135

    java集合-TreeMap的使用

    TreeMap是一种基于红黑树实现的有序映射(SortedMap)。它实现了NavigableMap接口,可以按照键的自然顺序或自定义排序规则对键值对进行排序和访问。

    Java期末复习-类集框架

    SortedMap接口、HashMap类、Hashtable类、Properties类、Map.Entry接口、WeakHashMap类、IndentityHashMap类 集合输出: Iterator、ListIterator、foreach、废除的Enumeration Collections工具类 Comparable接口、...

    SortedMap类的使用,视频讲解

    李兴华讲解SortedMap类的使用,视频讲解,简单易学。。。

    Map实现类1

    3. Map的遍历方式 4. Map接口主要方法 5. SortedMap接口主要方法 6. NavigableMap接口主要方法 8. 参考 3. Map的遍

    浅谈JsonObject中的key-value数据解析排序问题

    通过JsonObject的keys方法得到key的迭代器是无序的,要想实现排序,目前只能通过加装一层处理(方法来自Stack Overflow,感谢大神),将key-vlaue放入ThreeMap排序,排序规则默认是字母表顺序,可自定义Comparator...

    java集合框架 解析

    java集合框架 3.6. LinkedHashSet类 4. Map接口 4.1. Map.Entry接口 ...4.4. HashMap类和TreeMap类 4.4.1. HashMap类 4.4.2. TreeMap类 4.5. LinkedHashMap类 4.6. WeakHashMap类 4.6. IdentityHashMap类

    疯狂JAVA讲义

    7.6.2 SortedMap接口和TreeMap实现类 276 7.6.3 WeakHashMap实现类 279 7.6.4 IdentityHashMap实现类 280 7.6.5 EnumMap实现类 281 7.7 HashSet和HashMap的性能选项 282 7.8 操作集合的工具类:Collections 283...

    sorted_map:Dart中的SortedMap

    在结构上需要比较器,该比较器允许按键,值或二者的组合进行排序。 还包括限制地图容量的功能。 如果地图的容量受到限制,则当添加新条目时,它将从排序的开头或结尾弹出容量条目。用法一个简单的用法示例: import...

    Java数据结构--13.Java8数据结构TreeSet.pdf

    Java数据结构--13.Java8数据结构TreeSet 前⾔ ,上⼀篇中对 Set 接⼝最终实现类 HashSet 与 LinkedHashSet 做了介绍与分析,本篇将对另⼀种 Set 接⼝的最终实现类 TreeSet 进⾏ 介绍与分析。 先来看下 TreeSet 完整...

    Java容器.xmind

    实现comparable接口,元素是以二叉树的形式存放的。线程不安全 CopyOnWriteArraySet 标记: class Queue 标记: interface BlockingQueue 标记: interface ArrayBlockingQueue LinkedBlockingQueue ...

    javaSE代码实例

    14.7.5 SortedMap接口与TreeMap类 305 14.7.6 映射的遍历 308 14.8 栈在Java中的实现 309 14.8.1 Stack类的使用 309 14.8.2 Deque接口的使用 310 14.8.3 利用栈计算数学表达式 311 14.9 集合元素的常用...

    java实现的map排序

    HashMap里面的元素是无序的,要进行排序的话只能是用TreeMap和SortedMap,java实现的map排序

    对于java map类排序

    private static SortedMap, Integer&gt; mapSortByKey(Map, Integer&gt; unsort_map) { TreeMap, Integer&gt; result = new TreeMap, Integer&gt;() Object[] unsort_key = unsort_map.keySet().toArray(); Arrays.sort...

    Java开发详解.zip

    031113_【第11章:Java常用类库】_比较器(Comparable、Comparator)笔记.pdf 031114_【第11章:Java常用类库】_观察者设计模式笔记.pdf 031115_【第11章:Java常用类库】_正则表达式笔记.pdf 031116_【第11章:Java...

    java的集合类教学

    集合类Collection:集合层次中的根接口,JDK没有提供这个接口直接的实现类。 Set:不能包含重复的元素。SortedSet是一个按照升序排列元素的Set。 List:是一个有序的集合,可以包含重复的元素。提供了按索引访问的...

    java-immutable-collections:Java的高效ImmutablePersistent集合

    Java的不可变集合 概述 Java库的不可变集合(JImmutable ... JImmutables.sortedMap() JImmutables.sortedMap(Comparator) LinkedHashMap JImmutableMap JImmutables.insertOrderMap() 哈希集 JImmutableSet

    实现单层json按照key字母顺序排序的示例

    最近在做银行项目时遇到一个问题:银行加签名数据必须按照顺序排好,再拼接后加签名,这时候就遇到问题,如何实现JSONObject对象中key-value按照key进行排序; 实现代码如下: &lt;span xss=removed&gt;import java.util....

    安卓毕业设计app项目源码6-android-interviewer:安卓面试官

    安卓毕业设计app项目源码6 2018android 1.请写出ArrayList,LinkedList,HashMap之间的区别和联系 本题侧重与对android集合框架的认识程度 ...treeset基于sortedmap实现是有序的 map是以键值对形式存在的col

    详解Java的Hibernat框架中的Map映射与SortedMap映射

    主要介绍了Java的Hibernat框架中的Map映射与SortedMap映射,Hibernat是Java的SSH三大web开发框架之一,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics