欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 从零开始学java--集合类(2)

从零开始学java--集合类(2)

2025/4/29 21:26:58 来源:https://blog.csdn.net/PluMage11/article/details/147579883  浏览:    关键词:从零开始学java--集合类(2)

Queue

队列的使用:

在Java中,Queue是个接口,底层是通过链表实现的。  

方法功能

boolean add(E e)

入队列(插入失败会抛出异常)
boolean offer(E e)入队列
E remove( )出队列(队列已经为空会抛出异常)
E poll( )出队列
element( )获取对头元素(队列已经为空会抛出异常)
peek( )获取队头元素
int size( )获取队列中有效元素个数
boolean isEmpty()boolean isEmpty()

注意:Queue是个接口,在实例化时必须实例化LinkedList的对象,因为LinkedList实现了Queue接口。

双端队列(Deque)

双端队列(deque)是指允许两端都可以进行入队和出队操作的队列,deque 是 “double ended queue” 的简称。 那就说明元素可以从队头出队和入队,也可以从队尾出队和入队。

双端队列既可以当做普通队列使用,也可以当做栈来使用。

Deque是一个接口,使用时必须创建LinkedList的对象。

Set

常见方法说明:

方法解释
boolean add(E e)添加元素,但重复元素不会被添加成功
void clear()清空集合
boolean contains(Object o)判断o是否在集合中
Iterator<E> iterator()返回迭代器
boolean remove(Object o)删除集合中的o
int size()返回set中元素的个数
boolean isEmpty()检测set是否为空,空返回true,否则返回false
Object[] toArray()将set中的元素转换为数组返回
boolean containsAll(Collection<?> c)集合c中的元素是否在set中全部存在,是返回true,否则返回false
boolean addAll(Collection<?extends E>c)将集合c中的元素添加到set中,可以达到去重的效果

注意:

  1. Set是继承自Collection的一个接口类
  2. Set中只存储了key,并且要求key一定要唯一
  3. 不支持随机访问(不允许通过下标访问)
  4. TreeSet的底层是使用Map来实现的,其使用key与Object的一个默认对象作为键值对插入到Map中的
  5. Set最大的功能就是对集合中的元素进行去重
  6. 实现Set接口的常用类有TreeSet和HashSet,还有一个LinkedHashSet,LinkedHashSet是在HashSet的基础 上维护了一个双向链表来记录元素的插入次序。 
  7. Set中的Key不能修改,如果要修改,先将原来的删除掉,然后再重新插入
  8. TreeSet中不能插入null的key,HashSet可以。

TreeSet和HashSet的区别:

Set底层结构TreeSetHashSet
底层结构红黑树哈希桶
插入/删除/查找时间复杂度OO(1)
是否有序关于key有序不一定有序
线程安全不安全不安全
插入/删除/查找区别按照红黑树的特性来进行插入和删除

1、先计算key哈希地址

2、然后进行插入和删除

比较与覆写key必须能够比较,否则会抛出ClassCastException异常自定义类型需要覆写equals和hashCode方法
应用场景需要Key有序场景下Key是否有序不关心,需要更高的时间性能

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词