容器--Set概述

Set--集合

Set最大的特点就是不能存储相同的元素。Set直接继承Collection,因此具有Collection的一些常见的方法:

返回类型方法(参数)
booleanadd(E e)

如果指定的元素不存在,则将其指定的元素添加(可选操作)。

booleanaddAll(Collection<? extends E> c)

将指定集合中的所有元素添加到此集合(如果尚未存在)(可选操作)。

voidclear()

从此集合中删除所有元素(可选操作)。

booleancontains(Object o)

如果此集合包含指定的元素,则返回 true 。

booleancontainsAll(Collection<?> c)

返回 true如果此集合包含所有指定集合的元素。

booleanequals(Object o)

将指定的对象与此集合进行比较以实现相等。

inthashCode()

返回此集合的哈希码值。

booleanisEmpty()

如果此集合不包含元素,则返回 true 。

Iterator<E>iterator()

返回此集合中元素的迭代器。

booleanremove(Object o)

如果存在,则从该集合中删除指定的元素(可选操作)。

booleanremoveAll(Collection<?> c)

从此集合中删除指定集合中包含的所有元素(可选操作)。

booleanretainAll(Collection<?> c)

仅保留该集合中包含在指定集合中的元素(可选操作)。

intsize()

返回此集合中的元素数(其基数)。

default Spliterator<E>spliterator()

在此集合中的元素上创建一个 Spliterator 。

Object[]toArray()

返回一个包含此集合中所有元素的数组。

<T> T[]toArray(T[] a)

返回一个包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型。

Set中的常用实现类

首先我们来看下Set的结构图

可以看出主要的有三个实现类:

  1. HashSet
  2. TreeSet
  3. LinkedHashSet

我们依次来了解这三个实现类

HashSet

HashSet是无序的,不可重复的,允许存放null值底层封装HashMap,它是不同步的,是线程不安全的。相关 HashSet 的操作,基本上都是直接调用底层 HashMap 的相关方法来完成,我们应该为保存到 HashSet 中的对象覆盖 hashCode() 和 equals()。

TreeSet

TreeSet是一个有序的集合,它的作用是提供有序的Set集合。它继承了AbstractSet抽象类,实现了NavigableSet<E>,Cloneable,Serializable接口。TreeSet是基于TreeMap实现的,TreeSet的元素支持2种排序方式:自然排序或者根据提供的Comparator(比较器)进行排序。

LinkedHashSet

LinkedHashSet继承自HashSet,几乎与HashSet相同。LinkedHashSet同样具有不可重复的特点,但是其迭代顺序是有序的,即其迭代顺序为数据插入时的顺序。LinkedHashSet是一个线程不安全的集合。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值