1、自定义类实现内部比较器Comparable接口并重写compareTo方法
2、在新类中实现外部比较器Comparator并重写compare方法
3、使用匿名内部类实现外部比较器Comparator并重写compare方法
package TreeMap;
import org.junit.Test;
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
public class DemoTreeMap {
@Test
public void test01() {//自定义类实现内部比较器Comparable接口并重写compareTo方法
Map<Students, Integer> map = new TreeMap<Students, Integer>();
map.put(new Students("z", 12), 10);
map.put(new Students("s", 10), 20);
System.out.println("map = " + map);
}
@Test
public void test02() {//使用匿名内部类实现外部比较器Comparator并重写compare方法
Map<Person, Integer> map = new TreeMap<Person, Integer>(new Comparator<Person>() {
@Override
public int compare(Person person, Person t1) {
return person.age - t1.age;
}
});
map.put(new Person("z", 12), 10);
map.put(new Person("s", 10), 20);
System.out.println("map = " + map);
}
@Test
public void test03() {//在新类中实现外部比较器Comparator并重写compare方法
Map<Person, Integer> map = new TreeMap<Person, Integer>(new SortByAge());
map.put(new Person("z", 12), 10);
map.put(new Person("s", 10), 20);
System.out.println("map = " + map);
}
}
class Students implements Comparable {
String name;
int age;
public Students(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int compareTo(Object o) {
Students s = (Students) o;
return this.age - s.age;
}
@Override
public String toString() {
return "Students{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person() {
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
class SortByAge implements Comparator<Person> {
@Override
public int compare(Person person, Person t1) {
return person.age - t1.age;
}
}