美文网首页
TreeMap和TreeSet对象排序

TreeMap和TreeSet对象排序

作者: 阿健在长安 | 来源:发表于2018-08-15 11:40 被阅读38次
    package Tips;
    
    /**
     * 保证TreeMap的键有序有两种方法:
     * 自然排序:该键的类实现Comparable即重写compareTo方法,创建TreeMap不用特殊处理
     * 定制排序:实现Comparator接口即重写compare方法,创建TreeMap时传入该实现类
     */
    
    import java.util.Comparator;
    import java.util.Map;
    import java.util.Set;
    import java.util.TreeMap;
    import java.util.TreeSet;
    
    class Person implements Comparable<Person> {
        public String name;
        public int age;
    
        public Person(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Person [name=" + name + ", age=" + age + "]";
        }
    
        @Override
        public int compareTo(Person person) {
            return this.name.compareTo(person.name);
        }
    }
    
    class AscAgeComparator2 implements Comparator<Person> {
        public int compare(Person p1, Person p2) {
            return p1.age - p2.age;
        }
    }
    
    public class TreeMapSort {
    
        public static void main(String[] args) {
            Person p1 = new Person("Zera", 23);
            Person p2 = new Person("Jerry", 19);
            Person p3 = new Person("Tonny", 30);
    
            System.out.println("TreeMap自然排序:");
            Map<Person, Integer> map1 = new TreeMap<>();
            map1.put(p1, 5);
            map1.put(p2, 6);
            map1.put(p3, 7);
            System.out.println(map1);
    
            System.out.println("TreeMap定制排序:");
            Map<Person, Integer> map2 = new TreeMap<>(new AscAgeComparator2());
            map2.put(p1, 5);
            map2.put(p2, 6);
            map2.put(p3, 7);
            System.out.println(map2);
    
            System.out.println("TreeSet自然排序:");
            Set<Person> set1 = new TreeSet<>();
            set1.add(p1);
            set1.add(p2);
            set1.add(p3);
            System.out.println(set1);
    
            System.out.println("TreeSet定制排序:");
            Set<Person> set2 = new TreeSet<>(new AscAgeComparator2());
            set2.add(p1);
            set2.add(p2);
            set2.add(p3);
            System.out.println(set2);
        }
    
    }
    

    相关文章

      网友评论

          本文标题:TreeMap和TreeSet对象排序

          本文链接:https://www.haomeiwen.com/subject/ixnibftx.html