Java中Set与List的关系与区别介绍
作者:junjie 发布时间:2023-03-17 08:01:07
标签:Java,Set,List,区别
两个接口都是继承自Collection.
List (inteface)
次序是List 的最重要特点,它确保维护元素特定的顺序.
--ArrayList 允许对元素快速随机访问.
--LinkedList 对顺序访问进行优化,向List 中间插入与移除的开销并不大,具有addFrist(),addLast(),getFirst,getLast,removeFirst和removeLast().这些方法使得LinkedList可当作堆栈/队列/双向队列.
Set (inteface)
存入Set 的每个元素必须唯一,不保证维护元素的次序.加入Set 的Object必须定义equals()方法
--HashSet为快速查找而设计的Set ,存入HashSet对象必须定义hashCode().
--TreeSet 保护次序的Set ,使用它可以从Set 中提取有序序列.
--LinkedHashSet具有HashSet的查询速度,且内部使用链表维护元素的次序.
它们之间的存储方式不一样:
TreeSet采用红黑树的树据结构排序元素.
HashSet采用散列函数,这是专门为快速查询而设计的.
LinkedHashSet内部使用散列以加快查询速度,同时使用链表维护元素的次序.
使用HashSet/TreeSet时,必须为类定义equals();而HashCode()是针对HashSet,作为一种编程风格,当覆盖equals()的时候,就应该同时覆盖hashCode().


猜你喜欢
- 在电商上购买商品后,如果在下单而又没有支付的情况下,一般提示30分钟完成支付,否则订单自动。比如在京东下单为完成支付:超过24小时,就会自动
- 线程中断机制提供了一种方法,用于将线程从阻塞等待中唤醒,尝试打断目标线程的现有处理流程,使之响应新的命令。Java 留给开发者这一自由,我们
- 一、背景假如:黑客黑进了数据库,或者离职人员导出了数据,那么就可能导致这些敏感数据的泄漏。因此我们就需要找到一种方法来解决这个问题。二、解决
- 原理分析:迅雷的thunder://地址就是将普通url地址加前缀‘AA'、后缀‘ZZ',再base64编码后得到的字符串实
- T4简介T4(Text Template Transformation Toolkit)在 Visual Studio 中,“T4 文本模板
- 本文实例讲述了Android编程实现任务管理器的方法。分享给大家供大家参考,具体如下:任务管理器可以实现的功能有:1.查看当前系统下运行的所
- INotifyPropertyChanged:该接口包含一个事件, 针对属性发生变更时, 执行该事件发生。// /
- 先为啥要纯手工打造呢,因为对方是用C++做的,我按照他们给出的WSDL实现了一个WebService,结果他们完全不能调用。具体是他们调用的
- MyBatis-Plus是通过version机制实现乐观锁的。大致思路:取出记录,携带记录的当前version;更新记录的时候,比较记录当前
- 目录Profile用法resourcesfilters多环境配置解决方案Profile用法我们在application.yml中为jdbc.
- 如下所示://判断整数(int)private boolean isInteger(String str) {if (null == str
- 本文实例讲述了C#使用oledb操作excel文件的方法。分享给大家供大家参考。具体分析如下:不管什么编程语言都会提供操作Excel文件的方
- 首先我们来回忆一下上一节讲过的synchronized关键字,该关键字用于给代码段或方法加锁,使得某一时刻它修饰的方法或代码段只能被一个线程
- 一、ANR说明和原因1.1 简介ANR全称:Application Not Responding,也就是应用程序无响应。1.2 原因Andr
- 实现Android 滑动退出Activity的功能android向右滑动,退出activity//右滑删除 compile &
- 讲解之前需要说明的是旋转屏幕:在系统的自动旋转屏幕开启的情况下,我们旋转屏幕手动设置屏幕:我们自己去调用Activity的 setReque
- 本文实例讲述了Java中缀表达式转后缀表达式实现方法。分享给大家供大家参考,具体如下:本文先给出思路与方法,最后将给出完整代码项目实战:ht
- 我们与客户端的接 * 互中,为了更高的安全性,我们可能需要对接口加密(请求参数加密,服务端解密)、返回信息加密(服务端加密,客户端解密),但是
- Logback TurboFilter实现日志级别等内容的动态修改可能看到这个标题,读者会问:要修改日志的级别,不是直接修改log.xxx就
- 基础部分内容差不多讲解完了,今天开始进入Java提高篇部分,这部分内容会比之前的内容复杂很多,希望大家做好心理准备,看不懂的部分可以多看两遍