set

作者: 刘岳森 | 来源:发表于2017-10-23 21:38 被阅读12次

    set实现原理

    set的实现是基于map的。其实Set利用的就是Map中“键”不能重复的特性来实现的。 HashSet的巧妙实现:就是建立一个“键值对”,“键”就是我们要存入的对象,“值”则是一个常量。这样可以确保, 我们所需要的存储的信息之是“键”。而“键”在Map中是不能重复的,这就保证了我们存入Set中的所有的元素都不重复。而判断是否添加元素成功,则是通 过判断我们向Map中存入的“键值对”是否已经存在,如果存在的话,那么返回值肯定是常量:PRESENT ,表示添加失败。如果不存在,返回值就为null 表示添加成功。

    特点

    *set的特点在于set中的元素不能重复,因此可以用来去除重复的元素

    set常见操作

    • public int size() :返回set中元素的数目,如果set包含的元素数大于Integer.MAX_VALUE,返回Integer.MAX_VALUE;

    • public boolean isEmpty() :如果set中不含元素,返回true ;

    • public boolean contains(Object o) :如果set包含指定元素,返回true ;

    • public Iterator iterator() : 返回set中元素的迭代器,元素返回没有特定的顺序,除非set提高该保证的某些类的实例 ;

    • public boolean add(Object o) :如果set中不存在指定元素,则向set加入 ;

    • public boolean addAll(Collection c) :过滤集合中的重复元素,向set加入 【将c中所有元素添加到Set中,如果Set中已有某一元素,则不添加,因Set不允许有重复值】;

    • public boolean remove(Object o) :如果set中存在指定元素,则从set中删除 ;

    • public boolean removeAll(Collection c) :如果set包含指定集合,则从set中删除指定集合的所有元素 ;

    • public void clear() :从set中删除所有元素;

    几种不同的set实现方式

    HashSet

    特点
    • 存放进去的顺序和储存顺序无关
    • HashSet类按照哈希算法来存取集合中的对象,存取速度比较快允许包含值为null的元素,但最多只能有一个null元素;

    LinkedHashSet

    特点
    • 保持元素的添加顺序

    TreeSet

    特点
    • 对set进行排列

    相关文章

      网友评论

          本文标题:set

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