Java集合之Set接口

标签: Java集合
2人阅读 评论(0) 收藏 举报
分类:

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集合中的Set接口》

首先定义了一个课程类,里边放一些有关课程的属性和方法 package Chen_collection; /*  * 课程类  */   public classCourse {   ...
  • self_realian
  • self_realian
  • 2016-07-11 16:39:28
  • 466

Java知识(Set接口和集合工具类)

1.Set&HashSet Set接口的语法格式: Set set=new HashSet Set接口: 1.Set接口存储一组唯一,无序的对象 2.HashSet是Se...
  • yuzhaocong
  • yuzhaocong
  • 2017-08-18 17:21:18
  • 216

【java读书笔记】——Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)

两个月之前准备软考时,简单的从理论上总结了最常用的数据结构和算法,比如:线性表,链表,图。在进行java开发时,jdk为我们提供了一系列相应的类来实现基本的数据结构。jdk所提供的容器API位于jav...
  • jiuqiyuliang
  • jiuqiyuliang
  • 2014-06-30 09:59:06
  • 30529

Java单例集合下set接口及其常用实现类

**这篇紧接着上一篇继续介绍Java单例集合下的接口及其实现类; 上一篇已经介绍完了Java单例集合下的List接口,现在简单介绍一下Java单例集合下的set接口及其常用实现类。七.Set集合接...
  • My_Obsession
  • My_Obsession
  • 2015-11-22 20:59:07
  • 1423

JAVA集合框架之Set接口实现类

在上一篇《JAVA集合框架》中为大家介绍了JAVA集合框架的基本组成,这一片开始将为大家介绍集合框架中常用的实现类的用法。java.util.HashSet< E >此类实现 Set 接口,由哈希表(...
  • jianggujin
  • jianggujin
  • 2015-12-28 09:47:05
  • 7803

java中的集合之Set接口(三)

Set接口     没有扩展自己的方法,与Collection中的方法完全一致。 – HashSet • 此类实现 Set 接口,由哈希表(实际上是一个HashMap 实例)支持。它不保证set...
  • smile_from_2015
  • smile_from_2015
  • 2015-12-13 14:42:46
  • 491

常用对象API(集合框架-List和Set的特点)

List接口: 有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。 与...
  • zuoanren
  • zuoanren
  • 2013-02-27 23:02:08
  • 2820

set集合 HashSet: TreeSet实现Comparable接口,覆盖compareTo方法。 类实现Comparator接口,覆盖compare方法。

Set:元素是无序的(存入和取出的顺序不一定一致),   |--   |--   |--
  • u010209842
  • u010209842
  • 2014-10-15 18:25:47
  • 2285

Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与Lin

1.容器API的类图结构如下:     JAVA的集合类是一种特别有用的工具类,它可以用于存储数量不等的多个对象,并可以实现常用数据结构,如栈,队列等,除此之外,JAVA集合还可用于保存具有...
  • GarfieldEr007
  • GarfieldEr007
  • 2016-12-18 11:06:44
  • 1547

Java中的Set集合接口实现插入对象不重复的原理

在java的集合中,判断两个对象是否相等的规则是: 1)、判断两个对象的hashCode是否相等 。       如果不相等,认为两个对象也不相等,完毕       如果相等,转入2) (这一点只是...
  • lingzhm
  • lingzhm
  • 2015-04-02 13:54:40
  • 2972
    个人资料
    等级:
    访问量: 6171
    积分: 245
    排名: 31万+
    文章存档