`
wusuoya
  • 浏览: 641285 次
  • 性别: 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);
分享到:
评论

相关推荐

    java用treemap统计单词出现的个数

    TreeMap是Java集合框架中的一种Map实现,它实现了SortedMap接口,能够根据键的自然顺序或自定义的比较器对键进行排序。在本例中,我们使用TreeMap来统计单词出现的次数,并按照字母表顺序输出。 知识点2:Java比较...

    TreeMap源码

    TreeMap是Java集合框架中的一种有序映射数据结构,它实现了SortedMap接口,提供了按自然顺序或自定义比较器顺序存储键值对的能力。在深入理解TreeMap的源码之前,我们首先要了解其背后的基石——红黑树。 红黑树...

    TreeMap in Java_java_treemap_

    `TreeMap`类继承自`AbstractMap`,实现了`NavigableMap`、`SortedMap`接口,因此它具有丰富的导航功能。 一、`TreeMap`的基本操作 1. **插入元素**:使用`put()`方法将键值对插入到`TreeMap`中。例如,`map.put...

    Java集合排序及java集合类详解

    TreeMap则使用红黑树结构,元素按照键的自然排序或自定义比较器排序。 在Java集合排序方面,我们主要关注List和Map。对于List,可以使用Collections.sort()方法进行排序,这个方法默认使用元素的自然顺序,如果元素...

    Java 对象属性map排序示例

    TreeMap会根据键的自然顺序(Comparable)或者自定义的比较器(Comparator)进行排序。例如,按照键的自然顺序创建TreeMap: ```java Map, String&gt; sortedMap = new TreeMap(unsortedMap); ``` 如果需要自定义排序...

    Java源码解析TreeMap简介

    TreeMap的排序机制是基于比较器的,比较器可以是自然顺序或自定义的Comparator。如果使用自然顺序,那么TreeMap将根据键的自然顺序进行排序。如果使用自定义的Comparator,那么TreeMap将根据Comparator的比较结果...

    java中MAp介绍

    - `TreeMap`是基于红黑树的SortedMap接口实现,它可以按照键的自然顺序或者自定义的比较器进行排序。 - `TreeMap()`:创建一个空的TreeMap实例。 - `TreeMap(Map m)`:根据给定的Map创建一个新的TreeMap。 - `...

    Java中大集合

    SortedMap接口代表了一个有序的键值对集合,它的主要实现类有TreeMap。SortedMap维护了键的自然排序或者由Comparator提供的排序。这使得我们可以在遍历Map时得到有序的结果。例如,TreeMap会按照键的升序排列,可以...

    浅谈三种集合的关系、来源

    1. 对于List,可以使用Collections.sort()方法进行排序,但仅限于元素是可比较类型(如实现了Comparable接口的类)或者传入自定义的Comparator。 2. 实现Comparable接口,重写compareTo()方法,用于定义对象间的比较...

    重要知识Java中的Set,List,Map的区别.pdf

    Map接口的主要实现类有HashMap、TreeMap和LinkedHashMap。 - HashMap:基于哈希表实现,不保证元素顺序,插入和查询速度较快。键和值都可以是null,但是键必须是唯一的。 - TreeMap:实现了SortedMap接口,基于红黑...

    对map里面的value进行排序

    Map接口不直接支持排序,但是Java提供了一些实现了SortedMap接口的类,如TreeMap,它会按照键(Key)的自然顺序或者自定义比较器(Comparator)进行排序。但是,对于已经创建的HashMap或其他非排序Map,我们不能直接...

    集合部分总结

    - **TreeMap**:实现`SortedMap`接口,能够按照键的自然顺序或者自定义比较器进行排序。 - **Hashtable**:线程安全的`Map`实现,但不允许键或值为`null`。 #### 三、迭代器 - **定义**:`Iterator`是一个用于...

    2020老杜最新Java零基础进阶视频教程-集合课件

    Map接口的实现中,HashMap提供了一个快速的键值对存储解决方案,通过哈希函数快速定位键,而TreeMap则根据键的自然排序或自定义Comparator进行排序。此外,Hashtable是早期的线程安全Map实现,但由于其较低的性能,...

    Java集合框架.docx

    在众多的集合类中,`TreeMap`(K,V)是一个有序的Key-Value存储结构,属于`java.util`包下的`SortedMap`接口实现。`TreeMap`在内部使用了红黑树(Red-Black Tree)的数据结构,这种数据结构保证了插入、删除和查找操作...

    JAVA集合(List,Set,Map)

    ### JAVA集合(List, Set, Map)详解 ...理解这些接口和实现类之间的关系对于编写高质量、可维护的Java程序至关重要。通过合理选择和利用这些集合类型,开发者可以更好地满足应用程序的需求,并提高代码的性能和可读性。

    Java容器类学习心得.pdf

    提供了`comparator()`获取比较器,`firstKey()`获取最小键,`lastKey()`获取最大键等方法。 3. **抽象容器类**: - **AbstractCollection**,**AbstractList**,**AbstractSet**等抽象类提供了部分实现,帮助...

    Java Map按键排序和按值排序

    Java Map的按键排序和按值排序可以使用TreeMap,V&gt;和LinkedHashMap, String&gt;类来实现。按键排序可以使用TreeMap,V&gt;的比较器来定义比较规则,而按值排序可以使用LinkedHashMap, String&gt;的链表结构来保存键值对。

Global site tag (gtag.js) - Google Analytics