TreeMap
- TreeMap 实现了 SortedMap 接口(基于红黑树的实现),它能保证 Map 中的元素是有序的
- 可以使用 Comparator 或 Comparable 进行元素的比较
用法
TreeMap<Integer,String> treeMap = new TreeMap<>();
treeMap.put(5,"b");
treeMap.put(1,"a");
treeMap.put(6,"c");
treeMap.forEach((k,v)->{
System.out.println(k+" "+v);
});
TreeSet
- TreeSet 底层是基于 TreeMap 实现的,非线程安全,但它是一个有序集
TreeSet 用法
TreeSet<Integer> treeSet = new TreeSet<>();
treeSet.add(1);
treeSet.add(6);
treeSet.add(3);
treeSet.add(2);
treeSet.add(7);
treeSet.forEach(z->System.out.println(z));
public class Person implements Comparable<Person> {
private String name;
private Integer age;
// .... 构造方法与 set、get 方法
@Override
public int compareTo(Person o) {
if (this.age < o.getAge())
return 1;
return -1;
}
}
TreeSet<Person> treeSet = new TreeSet<>();
treeSet.add(new Person("b",1));
treeSet.add(new Person("a",5));
treeSet.add(new Person("b",3));
treeSet.forEach(person -> System.out.println(person));
- TreeSet 构造函数传入 Comparator
TreeSet<Person> treeSet = new TreeSet<>((o1,o2)->{
if (o1.getAge()>o2.getAge())
return 1;
if (o1.getAge()==o2.getAge())
return 0;
return -1;
});
treeSet.add(new Person("b",1));
treeSet.add(new Person("a",5));
treeSet.add(new Person("c",2));
treeSet.forEach(person -> System.out.println(person));
网友评论