• Java集合之Set接口


    Set接口的主要功能就是去重,它可以保证集合中不会有重复的元素(equals不相等)。

    Set接口

    Set接口

    • add (E e) 向列表内添加指定元素
    • addAll(Collection< ? extends E> c) addAll(int index, Collection< ? extends E> c) 向集合内(指定位置 index)添加另一集合的全部元素
    • get(int index)获取指定位置的元素
    • clear() 清空集合,可用于多次使用单个集合对象,节省资源
    • contains(Object o) 判断是否还有某个对象
    • containsAll(Collection< ?> c) 判断是否含有集合c的所有元素
    • parallelStream() java8新特性,使用fork/join框架自动并行处理
    • retainAll(Collection< ?> c)移除除c中元素的所有的其他元素
    • remove(Object o) 移除集合中的一个元素
    • removeAll(Collection< ?> c) 移除集合含有的集合c中的所有元素
    • removeIf(Predicate< ? super E> filter) 底层迭代调用Predicate的test方法。Predicate函数式接口主要用提供test()方法,该方法返回一个布尔变量
    • spliterator() 并行迭代器
    • stream() 返回集合的流资源,用于函数式运算
    • toArray() 转换成数组
    • toArray(T[] a) 将集合转换成对应对象类型的数组

    HashSet类

    HashSet的底层基于HashMap实现,元素存储在HashMap的值中,内部数据存储是无序的,同时HashSet不是线程安全的。
    可以使用Collections工具类创建线程安全的HashSet:
    Set s = Collections.synchronizedSet(new HashSet(...));

    LinkedHashSet继承了HashSet,可以对照HashMap和LinkedHashMap,LinkedHashSet同样可以保证插入元素的顺序,其他的特性和HashSet一样。

    SortedSet接口默认根据自然顺序对集合进行排序,保证内部集合有序。

    SortedSet接口

    集合内的元素根据自然顺序排序,或者通过一个对应的排序器排序(创建集合时指定)
    comparator() 返回有序集合使用的排序器
    first() 返回有序集合的第一个元素
    headSet(E toElement) 返回toElement之前的所有元素
    last() 返回有序集合的最后一个元素
    spliterator()
    subSet(E fromElement, E toElement) 返回从fromElement到toElement的元素,包含fromElement不包含toElement
    tailSet(E fromElement) 返回fromElement以后的所有元素

    NavigableSet接口继承了SortedSet,提供了更多的基于排序的方法。

    NavigableSet接口

    不允许插入null元素
    ceiling(E e) 返回排序最靠前的集合中与e可以equal或者比e大的元素,没有的话返回null
    descendingIterator() 降序返回集合的迭代器
    descendingSet() 返回一个集合的降序
    floor(E e) 返回集合中最靠后与e可以equal或者比e小的元素,没有的话返回null
    headSet(E toElement) 返回toElement之前的所有元素,包含toElement
    headSet(E toElement, boolean inclusive) 返回toElement之前的所有元素,isclusive决定是否包含toElement
    higher(E e) 返回排序最靠前的集合中比e大的元素,没有的话返回null
    iterator()
    lower(E e) 返回排序最靠后的集合中比e小的元素,没有的话返回null
    poolFirst() 获取并移除头部元素
    poolLast() 获取并移除尾部元素
    subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
    返回从 fromElement到toElement的集合,fromInclusive决定是否包含fromElement,toInclusive决定是否包含toElement
    subSet(E fromElement, E toElement)
    返回从 fromElement到toElement的集合,包含fromElement,不包含toElement
    tailSet(E fromElement) 返回fromElement之后的所有元素,包含fromElement
    tailSet(E fromElement, boolean inclusive) 返回fromElement之后的所有元素,inclusive决定是否包含fromElement

    TreeSet类

    TreeSet类

    A NavigableSet implementation based on a TreeMap. The elements are ordered using their naturNavigableSet al ordering, or by a Comparator provided at set creation time, depending on which constructor is used.

    NavigableSet 的实现,底层数据基于TreeMap。底层数据的排序基于自然顺序或者新建对象时定义的比较器。

    有序集合,底层实现为TreeMap
    并发时不安全
    ceiling(E e) 返回排序最靠前的集合中与e可以equal或者比e大的元素,没有的话返回null
    descendingIterator() 降序返回集合的迭代器
    descendingSet() 返回一个集合的降序
    floor(E e) 返回集合中最靠后与e可以equal或者比e小的元素,没有的话返回null
    headSet(E toElement) 返回toElement之前的所有元素,包含toElement
    headSet(E toElement, boolean inclusive) 返回toElement之前的所有元素,isclusive决定是否包含toElement
    higher(E e) 返回排序最靠前的集合中比e大的元素,没有的话返回null
    iterator()
    lower(E e) 返回排序最靠后的集合中比e小的元素,没有的话返回null
    poolFirst() 获取并移除头部元素
    poolLast() 获取并移除尾部元素
    subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
    返回从 fromElement到toElement的集合,fromInclusive决定是否包含fromElement,toInclusive决定是否包含toElement
    subSet(E fromElement, E toElement)
    返回从 fromElement到toElement的集合,包含fromElement,不包含toElement
    tailSet(E fromElement) 返回fromElement之后的所有元素,包含fromElement
    tailSet(E fromElement, boolean inclusive) 返回fromElement之后的所有元素,inclusive决定是否包含fromElement

  • 相关阅读:
    java连接常见数据库的连接字符串
    一个用来自动管理大容量表的Sql脚本
    Ibatis2.0使用说明(一)——入门实例篇
    态度决定你的人生高度
    jboss配置入门(二) -JBOSS3.2.3/3.2.6部署及配置修改
    如何在一个工程里面实现不同的功能打入不同的日志文件中【log4net】
    Xsl实践总结(一)
    Xsl实践总结(三)-介绍一款开发XSL不错的IDE(Stylus)
    Xsl实践总结(二)
    教你节省时间 让你个人效率翻三倍
  • 原文地址:https://www.cnblogs.com/Simon-cat/p/9996594.html
Copyright © 2020-2023  润新知