TreeMap的自然排序和定制排序分别如何使用实例
时间: 2023-05-21 13:01:39 浏览: 182
TreeMap的自然排序是指按照键的自然顺序进行排序,例如数字按照从小到大的顺序排序,字符串按照字典序排序。使用TreeMap的默认构造函数创建一个实例即可使用自然排序。
示例代码:
```
TreeMap<Integer, String> map = new TreeMap<>();
map.put(3, "three");
map.put(1, "one");
map.put(2, "two");
System.out.println(map); // 输出 {1=one, 2=two, 3=three}
```
定制排序是指按照自定义的比较器进行排序,比如按照值的大小进行排序。需要创建一个实现了Comparator接口的比较器对象,并将其作为参数传递给TreeMap的构造函数。
示例代码:
```
TreeMap<Integer, String> map = new TreeMap<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1); // 按照键的倒序排序
}
});
map.put(3, "three");
map.put(1, "one");
map.put(2, "two");
System.out.println(map); // 输出 {3=three, 2=two, 1=one}
```
相关问题
java中treemap按照键排序方式
Java中的TreeMap是一种基于红黑树实现的有序映射,它默认按照键的自然顺序进行排序。
如果你想要自定义排序方式,可以在TreeMap的构造方法中传入一个实现了Comparator接口的比较器对象。比如,如果你想要按照键的长度排序:
```java
TreeMap<String, String> map = new TreeMap<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return Integer.compare(o1.length(), o2.length());
}
});
map.put("apple", "苹果");
map.put("banana", "香蕉");
map.put("orange", "橙子");
System.out.println(map); // 输出 {apple=苹果, banana=香蕉, orange=橙子}
```
在这个例子中,我们创建了一个TreeMap对象,并传入了一个比较器对象,该比较器按照字符串长度进行排序。在添加元素时,TreeMap会根据比较器的规则进行排序。最终输出结果为 `{apple=苹果, banana=香蕉, orange=橙子}`。
Treemap使用comparator例子
Treemap使用comparator例子可以参考以下代码:
```
import java.util.Comparator;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
public class TreeMapExample {
public static void main(String[] args) {
// 创建一个TreeMap,并使用自定义的Comparator比较器
SortedMap<String, Integer> treeMap = new TreeMap<>(new MyComparator());
// 往TreeMap中插入数据
treeMap.put("apple", 1);
treeMap.put("banana", 2);
treeMap.put("orange", 3);
treeMap.put("lemon", 4);
treeMap.put("grape", 5);
// 遍历TreeMap并输出
for (Map.Entry<String, Integer> entry : treeMap.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
// 自定义Comparator比较器,按照字符串长度倒序排序
static class MyComparator implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
return Integer.compare(o2.length(), o1.length());
}
}
}
```
这个例子中,我们创建了一个TreeMap对象并使用自定义的Comparator比较器进行排序。排序规则是按照字符串长度倒序排列,这样的话输出的结果是:
```
orange : 3
lemon : 4
grape : 5
banana : 2
apple : 1
```