一、将TreeMap中指定元素排在集合前面
1. 比较器实现
/**
* TreeMap比较器
*
*/
public class MyComparator implements Comparator<String>{
private Map<String,Integer> bankCodeMap = new HashMap<String,Integer>();
private int tempWeight = 0;
public MyComparator(){
bankCodeMap.put("ICBC", 1);
bankCodeMap.put("CCB", 2);
bankCodeMap.put("ABC", 3);
}
@Override
public int compare(String o1, String o2) {
int weight1 = getWeight(o1);
int weight2 = getWeight(o2);
return weight1-weight2;
}
/**
* 获取权重
* @param key
* @return
*/
private int getWeight(String key){
Integer value = bankCodeMap.get(key);
if(value == null){
if(tempWeight == 0){
tempWeight = Collections.max(bankCodeMap.values()) + 1;
}else{
tempWeight = tempWeight + 1;
}
value = tempWeight;
bankCodeMap.put(key, value);
}
return value;
}
}
2. 测试代码
TreeMap<String,String> map = new TreeMap<String,String>(new MyComparator());
map.put("UOP", "STR1");
map.put("HP", "STR2");
map.put("ICBC", "STR3");
map.put("ABC", "STR4");
map.put("CCB", "STR5");
map.put("GDB", "STR6");
System.out.println(map);
相关推荐
它按照键的自然顺序或者自定义比较器的顺序来存储元素。在这个场景下,`TreeMap`被用来实现数据的分组,并构建一个树形结构,这在处理层次化数据或组织具有关联关系的数据时非常有用。例如,在处理数据库记录时,...
它实现了一个映射接口,其中键(keys)是唯一的,并且通过自然排序或者自定义比较器进行排序。TreeMap内部使用红黑树算法来维护键值对的顺序,这使得插入、删除和查找操作具有O(log n)的时间复杂度。 在Treemap-...
TreeMap是Java集合框架中的一种有序映射数据结构,它实现了SortedMap接口,提供了按自然顺序或自定义比较器顺序存储键值对的能力。在深入理解TreeMap的源码之前,我们首先要了解其背后的基石——红黑树。 红黑树...
Java TreeMap是一个有序的Map实现,它可以根据对象的自然顺序或自定义的比较器对键进行排序。在本例中,我们使用TreeMap来统计一个句子或一个段落中单词出现的次数,并按照字母表顺序输出。 知识点1:Java TreeMap...
- **特性**:TreeMap的键值对是有序的,可以通过键的自然顺序或自定义比较器进行排序,适合需要有序遍历的场景。 - **性能分析**:在插入和查找操作中,随着数据量的增加,TreeMap的性能逐渐下降,尤其是在大规模...
`TreeMap`按照键的自然顺序或自定义比较器的顺序来排序键。在这里,我们可以使用学生的姓名作为键,因为姓名通常是唯一的,且方便比较。例如: ```java Map, Integer> studentScores = new TreeMap(); ...
- **键排序**:所有键都会根据其自然排序或提供的比较器进行排序。 - **有序性**:`TreeMap`可以按键的自然顺序或用户定义的顺序返回元素。 - **性能**:尽管`TreeMap`提供排序功能,但它的时间复杂度通常是O(log...
它维护了键的自然顺序或者根据提供的比较器进行排序。`TreeMap`类继承自`AbstractMap`,实现了`NavigableMap`、`SortedMap`接口,因此它具有丰富的导航功能。 一、`TreeMap`的基本操作 1. **插入元素**:使用`put...
- 在集合框架中,如TreeSet和TreeMap,它们需要比较器来维护内部元素的有序性。 4. **匿名内部类简化代码** 如果比较逻辑较为简单,我们可以使用匿名内部类的方式,直接在调用`sort()`方法的地方创建比较器实例,...
- 另外两个构造器则分别基于这两个主要构造器实现,即间接依赖于 TreeMap。 2. **存储机制**: - TreeSet 底层使用 TreeMap 作为其实际存储容器,这意味着 TreeSet 中的元素实际上是通过 TreeMap 的键值对形式...
1. **有序性**:`Treemap`中的元素按照键的自然顺序或者比较器提供的顺序进行排序。在这个学生信息管理程序中,可能使用学号作为键,因为学号通常具有自然排序。 2. **高效查询**:由于`Treemap`是红黑树的实现,其...
在Java编程语言中,`TreeMap`是一种基于红黑树数据结构实现的键值对容器,与`HashMap`不同,`TreeMap`自动按照键的自然顺序或者自定义的比较器进行排序。当我们需要存储的数据有特定的排序需求时,`TreeMap`便成为一...
3. 使用已存在的Map构造函数:`TreeMap treeMap = new TreeMap(anotherMap)`,这将复制anotherMap的所有键值对到新的TreeMap,并按Key的自然顺序或已提供的比较器进行排序。 四、TreeMap的特性 1. 有序性:TreeMap...
本文将深入探讨如何使用比较器(Comparator)实现自定义排序,以适应特定场景的需求,例如在象棋AI算法中进行检索排序。 首先,我们要了解Java中的`Comparator`接口。`Comparator`是Java Collections Framework的一...
由于`TreeMap`内部会根据键的自然顺序或比较器进行排序,所以键的类型必须实现`Comparable`接口,或者在创建`TreeMap`时传入自定义的`Comparator`。 总结一下,Java泛型是编写类型安全、高效代码的关键工具。通过...
总结,`TreeMap` 和 `TreeSet` 提供了强大的排序功能,它们通过红黑树保证了高效的数据操作,并允许开发者通过自定义比较器实现复杂的数据排序需求。在设计数据结构和算法时,了解并合理运用这些特性可以极大地提升...
TreeMap 是一个有序的 Map 集合,它可以根据键的自然顺序或自定义的比较器进行排序。 TreeMap 排序的优点 1. 高效排序:TreeMap 使用红黑树数据结构来存储数据,因此它可以快速地插入、删除和查找数据。 2. 自定义...
1. **创建和初始化**:创建`TreeMap`可以使用无参构造器,也可以指定比较器。比较器用于定义键的排序规则,如果不指定,则默认使用键的自然顺序(实现了`Comparable`接口的类)。 2. **添加元素**:`put()`方法用于...
相对而言,TreeMap是基于红黑树数据结构实现的,它能保证元素按照键的自然顺序或者用户自定义的比较器顺序进行排序。因此,当我们需要一个保持键有序的Map时,TreeMap是一个好选择。与HashMap一样,TreeMap也是非...
TreeMap的排序机制是基于比较器的,比较器可以是自然顺序或自定义的Comparator。如果使用自然顺序,那么TreeMap将根据键的自然顺序进行排序。如果使用自定义的Comparator,那么TreeMap将根据Comparator的比较结果...