与SortedSet接口类似,SortedMap也是一个结构,待排序的Map,其一个比较常用的实现类是TreeMap。
TreeMap的put(K key, V value)方法在每添加一个元素时,都会自动排序。
构造方法:
TreeMap()
使用键的自然顺序构造一个新的、空的树映射。
TreeMap(Comparator<? super K> comparator)
构造一个新的、空的树映射,该映射根据给定比较器进行排序。
TreeMap(Map<? extends K,? extends V> m)
构造一个与给定映射具有相同映射关系的新的树映射,该映射根据其键的自然顺序 进行排序。
使用键的自然顺序构造一个新的、空的树映射。
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);
相关推荐
TreeMap是Java集合框架中的一种Map实现,它实现了SortedMap接口,能够根据键的自然顺序或自定义的比较器对键进行排序。在本例中,我们使用TreeMap来统计单词出现的次数,并按照字母表顺序输出。 知识点2:Java比较...
TreeMap是Java集合框架中的一种有序映射数据结构,它实现了SortedMap接口,提供了按自然顺序或自定义比较器顺序存储键值对的能力。在深入理解TreeMap的源码之前,我们首先要了解其背后的基石——红黑树。 红黑树...
`TreeMap`类继承自`AbstractMap`,实现了`NavigableMap`、`SortedMap`接口,因此它具有丰富的导航功能。 一、`TreeMap`的基本操作 1. **插入元素**:使用`put()`方法将键值对插入到`TreeMap`中。例如,`map.put...
TreeMap则使用红黑树结构,元素按照键的自然排序或自定义比较器排序。 在Java集合排序方面,我们主要关注List和Map。对于List,可以使用Collections.sort()方法进行排序,这个方法默认使用元素的自然顺序,如果元素...
TreeMap会根据键的自然顺序(Comparable)或者自定义的比较器(Comparator)进行排序。例如,按照键的自然顺序创建TreeMap: ```java Map, String> sortedMap = new TreeMap(unsortedMap); ``` 如果需要自定义排序...
TreeMap的排序机制是基于比较器的,比较器可以是自然顺序或自定义的Comparator。如果使用自然顺序,那么TreeMap将根据键的自然顺序进行排序。如果使用自定义的Comparator,那么TreeMap将根据Comparator的比较结果...
- `TreeMap`是基于红黑树的SortedMap接口实现,它可以按照键的自然顺序或者自定义的比较器进行排序。 - `TreeMap()`:创建一个空的TreeMap实例。 - `TreeMap(Map m)`:根据给定的Map创建一个新的TreeMap。 - `...
SortedMap接口代表了一个有序的键值对集合,它的主要实现类有TreeMap。SortedMap维护了键的自然排序或者由Comparator提供的排序。这使得我们可以在遍历Map时得到有序的结果。例如,TreeMap会按照键的升序排列,可以...
1. 对于List,可以使用Collections.sort()方法进行排序,但仅限于元素是可比较类型(如实现了Comparable接口的类)或者传入自定义的Comparator。 2. 实现Comparable接口,重写compareTo()方法,用于定义对象间的比较...
Map接口的主要实现类有HashMap、TreeMap和LinkedHashMap。 - HashMap:基于哈希表实现,不保证元素顺序,插入和查询速度较快。键和值都可以是null,但是键必须是唯一的。 - TreeMap:实现了SortedMap接口,基于红黑...
Map接口不直接支持排序,但是Java提供了一些实现了SortedMap接口的类,如TreeMap,它会按照键(Key)的自然顺序或者自定义比较器(Comparator)进行排序。但是,对于已经创建的HashMap或其他非排序Map,我们不能直接...
- **TreeMap**:实现`SortedMap`接口,能够按照键的自然顺序或者自定义比较器进行排序。 - **Hashtable**:线程安全的`Map`实现,但不允许键或值为`null`。 #### 三、迭代器 - **定义**:`Iterator`是一个用于...
Map接口的实现中,HashMap提供了一个快速的键值对存储解决方案,通过哈希函数快速定位键,而TreeMap则根据键的自然排序或自定义Comparator进行排序。此外,Hashtable是早期的线程安全Map实现,但由于其较低的性能,...
在众多的集合类中,`TreeMap`(K,V)是一个有序的Key-Value存储结构,属于`java.util`包下的`SortedMap`接口实现。`TreeMap`在内部使用了红黑树(Red-Black Tree)的数据结构,这种数据结构保证了插入、删除和查找操作...
### JAVA集合(List, Set, Map)详解 ...理解这些接口和实现类之间的关系对于编写高质量、可维护的Java程序至关重要。通过合理选择和利用这些集合类型,开发者可以更好地满足应用程序的需求,并提高代码的性能和可读性。
提供了`comparator()`获取比较器,`firstKey()`获取最小键,`lastKey()`获取最大键等方法。 3. **抽象容器类**: - **AbstractCollection**,**AbstractList**,**AbstractSet**等抽象类提供了部分实现,帮助...
Java Map的按键排序和按值排序可以使用TreeMap,V>和LinkedHashMap, String>类来实现。按键排序可以使用TreeMap,V>的比较器来定义比较规则,而按值排序可以使用LinkedHashMap, String>的链表结构来保存键值对。