总结于尚硅谷学习视频
TreeMapTest类
package com.day0308_1; import org.junit.jupiter.api.Test; import java.util.*; public class TreeMapTest { //向TreeMap中添加key-value,要求key必须是由同一个类创建的对象 //因为要按照key进行排序:自然排序、定制排序 //自然排序 @Test public void test1() { TreeMap map = new TreeMap(); User u1 = new User("Tom", 23); User u2 = new User("Jerry", 32); User u3 = new User("Jack", 20); User u4 = new User("Rose", 18); map.put(u1, 98); map.put(u2, 89); map.put(u3, 76); map.put(u4, 100); Set entrySet = map.entrySet(); Iterator iterator1 = entrySet.iterator(); while (iterator1.hasNext()) { Object obj = iterator1.next(); Map.Entry entry = (Map.Entry) obj; System.out.println(entry.getKey() + "---->" + entry.getValue()); } } //定制排序 @Test public void test2() { TreeMap map=new TreeMap(new Comparator() { @Override public int compare(Object o1, Object o2) { if(o1 instanceof User&&o2 instanceof User){ User u1= (User) o1; User u2= (User) o2; return Integer.compare(u1.getAge(),u2.getAge()); } throw new RuntimeException("输入的年龄不匹配"); } }); User u1 = new User("Tom", 23); User u2 = new User("Jerry", 32); User u3 = new User("Jack", 20); User u4 = new User("Rose", 18); map.put(u1, 98); map.put(u2, 89); map.put(u3, 76); map.put(u4, 100); Set entrySet = map.entrySet(); Iterator iterator1 = entrySet.iterator(); while (iterator1.hasNext()) { Object obj = iterator1.next(); Map.Entry entry = (Map.Entry) obj; System.out.println(entry.getKey() + "---->" + entry.getValue()); } } }
User类
package com.day0308_1; import java.util.Objects; public class User implements Comparable{ private String name; private int age; public User() { } public User(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + '}'; } @Override public boolean equals(Object o) { System.out.println("User equals..."); if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; User user = (User) o; return age == user.age && Objects.equals(name, user.name); } @Override public int hashCode() { return Objects.hash(name, age); } //按姓名从大到小,年龄从小到大排列 @Override public int compareTo(Object o) { if(o instanceof User){ User user=(User)o; // return -this.name.compareTo(user.name); int compare=-this.name.compareTo(user.name); if(compare!=0){ return compare; }else { return Integer.compare(this.age,user.age); } }else{ throw new RuntimeException("输入的类型不匹配"); } } }