TreeSet的与众不同

TreeSet添加元素的时候,是根据compareTo 方法来比较排序和判断是否相等.如果返回0,则认为这两个对象在同以位置,是同一个对象.也就是说TreeSet 只会添加compareTo

返回0的对象集中的一个对象.

为了避免这种情况,需要像下面这样写

    @Override
    public int compare(CountryCode cc1, CountryCode cc2) {
        int    cpr= cc1.getCountry().compareToIgnoreCase(cc2.getCountry());
         if(cpr==0){
            cpr=cc1.getOperator().compareToIgnoreCase(cc2.getOperator());
            if(cpr==0){
                cpr=cc1.getCode().compareTo(cc2.getCode());
            }
         }

         return cpr;
    }
时间: 2024-10-13 11:46:57

TreeSet的与众不同的相关文章

java HashSet 与 TreeSet

Set接口并没有对Collection接口进行扩充,只是比Collection接口要求更加严格了,不能增加重复的元素,并且采用散列的储存方式,所以没有顺序 import java.util.Set; import java.util.HashSet; import java.util.TreeSet; public class Test { public static void main(String[] args) { //Set allSet = new HashSet();//@结果 1

HashSet,TreeSet和LinkedHashSet的区别

Set接口Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false.Set判断两个对象相同不是使用==运算符,而是根据equals方法.也就是说,只要两个对象用equals方法比较返回true,Set就不 会接受这两个对象. HashSet: 顺序是不确定性的. LinkedHashSet:按照输入的顺序进行输出. TreeSet:SortedSet 接口的唯一实现类,保证集合元素处于排序状态. 1.HashSetHashSet有以下特点    不能保证元素的

排序及重复元素去重的说明,TreeSet,HashSet

先看下面一段代码: package 类集; import java.util.Set; import java.util.TreeSet; class Person{ private String name ; private int age ; public Person(String name,int age){ this.name = name ; this.age = age ; } public String gtoString(){ return "姓名:" + this.

Java集合框架总结(3)——TreeSet类的排序问题

Java集合框架总结(3)--TreeSet类的排序问题 TreeSet支持两种排序方法:自然排序和定制排序.TreeSet默认采用自然排序. 1.自然排序 TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合元素按升序排列,这种方式就是自然排序.(比较的前提:两个对象的类型相同). java提供了一个Comparable接口,该接口里定义了一个compareTo(Object obj)方法,该方法返回一个整数值,实现该接口的类必须实现该

Treeset集合

TreeSet 集合的特点: 1.它是Set集合的一种 就是无角标型的,二分叉的数据结构 2.它是按照CompareTo()来有序地存放数据的 3.它可以依赖2中比较方式,一种是比较器,一种Comperable; 4.比较器可以随便定义主要比较方法,而Comperable是要格局特定的需求更改的 ------------------------------------------------------------------------------------------- package c

TreeSet

1.HashSet 在存储东西的时候,先利用hashCode计算出Hash值,之后存到哈希表中,如果哈希表中的这个位置已经存在了元素,再调用equals方法,检验这个新进入的元素是否与之前的元素是同一对象 2.TreeSet 添加元素的需要利用Comparable 或者 Comparator 1.Comparable 接口 方法实现TreeSet添加元素 Comparable接口的API介绍如下: 比较此对象与指定对象的顺序.如果该对象小于.等于或大于指定对象,则分别返回负整数.零或正整数. 实

HashSet vs. TreeSet vs. LinkedHashSet

A Set contains no duplicate elements. That is one of the major reasons to use a set. There are 3 commonly used implementations of Set: HashSet, TreeSet and LinkedHashSet. When and which to use is an important question. In brief, if you need a fast se

TreeSet的学习

TreeSet is another popular implementation of Set interface along with HashSet and LinkedHashSet. All these implementations of Set interface are required in different scenarios. If you don’t want any order of elements, then you can use HashSet. If you

Java 集合类 TreeSet、TreeMap

TreeMap和TreeSet的异同: 相同点: TreeMap和TreeSet都是有序的集合,也就是说他们存储的值都是拍好序的. TreeMap和TreeSet都是非同步集合,因此他们不能在多线程之间共享,不过可以使用方法Collections.synchroinzedMap()来实现同步 运行速度都要比Hash集合慢,他们内部对元素的操作时间复杂度为O(logN),而HashMap/HashSet则为O(1). 不同点: 最主要的区别就是TreeSet和TreeMap非别实现Set和Map接