java 集合和Comparable,Conparator 排序小结

  1.  
  2. Set中不能有两个相同的元素,Set的实现类有HashSet ,LinkedHashSet , TreeSet。
  3.  HashSet比较常用,存取插入比较快,根据哈希索引操作。
  4. LinkedHashSet使用链表实现的,所以优势在于遍历迭代。
  5. 而TreeSet采用红黑树数据结构,要求元素必须实现Comparable接口(自然排序)或者new TreeSet 的时候加入Comparator(定制排序),放进去就是排好顺序的了,它的元素始终处于排序状态。
  6. 在HashSet ,LinkedHashSet 中判断两个元素相等的标准是两个对象通过equals()方法比较相等,并且两个对象的hashCode()方法返回值也相等。如果重写类的equals()方法,也要重写hashCode()方法,规则是如果equals()返回true,那么hashCode()也应该值相同。一个对象的hashCode()应该是个不变的值,对象的实例变量参与计算hashCode的话,尽量不要改动该实例变量。 
  7. TreeSet的元素有自然排序和定制排序,默认是按升序从小到大排序的,但是实现比较方法的不同可以达到我们的目的。
//Java的认为是第一个大于第二个返回正数,小于返回负数,等于返回0
//自然排序,implements Comparable<>
 @Override
    public int compareTo(Console o)
    {

        return (int) (o.price - this.price);
    }

//定制排序
//匿名类将比较器加入
TreeMap<Double,Console> treemap = new TreeMap<Double,Console>(new Comparator<Double>(){
            //默认是升序排序
            @Override
            public int compare(Double o1, Double o2)
            {
           
                return (int) (o2.doubleValue()-o1.doubleValue());
            }
            
        });
  1. Map都是由key 和Value组成的
  2. TreeMap排序是依据它key对象的两种排序操作进行排序的。

猜你喜欢

转载自blog.csdn.net/yan_dan/article/details/83509911