美文网首页
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对象排序

  • JAVA8 TreeSet学习笔记

    TreeSet TreeSet是基于TreeMap的NavigableSet实现。使用元素的自然顺序对元素进行排序...

  • TreeSet

    项目中需要按照时间先后排序,想到了TreeSet。TreeSet实际上调用的TreeMap的put方法,排序分成两...

  • TreeSet简介

    TreeSet简介 TreeSet支持排序 基于TreeMap实现 非线程安全的 不支持get(int)来获取指定...

  • [LeetCode] 数据结构 - TreeMap/TreeSe

    TreeSet和TreeMap都是ordered存储结构。而TreeSet又基于TreeMap来实现。 TreeS...

  • TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?...

  • JDK源码解析——TreeSet and TreeMap

    TreeSet and TreeMap 总体介绍 之所以把TreeSet和TreeMap放在一起讲解,是因为二者在...

  • TreeSet and TreeMap

    TreeSet and TreeMap 总体介绍 之所以把TreeSet和TreeMap放在一起讲解,是因为二者在...

  • TreeSet

    TreeSet的特点:1、排序:1)自然排序2)比较器排序 2、唯一:底层通过TreeMap实现了元素的唯一性。 ...

  • java_TreeSet_自定义排序与练习题

    TreeSet支持两种排序方法:自然排序和定制排序。TreeSet默认采用自然排序。 自然排序 TreeSet会调...

网友评论

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

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