java 中的 Set集合

1、Set:注重独一无二的性质,该体系集合可以知道某物是否已存在于集合中,不会存储重复的元素

  • 用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。
---| Itreable      接口 实现该接口可以使用增强for循环  
     ---| Collection     描述所有集合共性的接口  
         ---| List接口     可以有重复元素的集合  
            ---| ArrayList     
            ---|  LinkedList  
         ---| Set接口      不可以有重复元素的集合  
            ---| HashSet  线程不安全,存取速度快。底层是以哈希表实现的。 
            ---| TreeSet  红-黑树的数据结构,默认对元素进行自然排序(String)。如果在比较的时候两个对象返回值

2、HashSet

  • HashSet不存入重复元素的规则.使用hashcode和equals

3、TreeSet

  • 红黑树算法的规则: 左小右大

元素自身具备比较性

  • 实现Comparable接口,重写compareTo方法
  • 这种方式叫做元素的自然排序也叫做默认排序

容器具备比较性

  • 当元素自身不具备比较性,或者元素具备的比较性不是所需要的
  • 容器自身具备。需要定义一个类实现接口Comparator,重写compare方法
  • 当Comparable比较方式和Comparator比较方式同时存在时,以Comparator的比较方式为主
  • 在重写compareTo或者compare方法时,必须要明确比较的主要条件相等时要比较次要条件
  • 上述条件指,在比较方法中,可对多个域进行比较
  • 存入TreeSet集合中的元素要具备比较性
  • 当compareTo()函数返回值为0时,说明两个对象相等
  • 比较器接口:
----| Comparable  
            compareTo(Object o)     元素自身具备比较性  
----| Comparator  
            compare( Object o1, Object o2 ) 给容器传入比较器  

4、LinkedHashSet

  • 会保存插入的顺序
  • 看到array,就要想到角标。

  • 看到link,就要想到first,last。

  • 看到hash,就要想到hashCode,equals.

  • 看到tree,就要想到两个接口。Comparable,Comparator。

猜你喜欢

转载自my.oschina.net/u/3847203/blog/1820928