Java测试开发--Set、Map、List三种集合(四)
1.集合类型主要有3种:set(集)、list(列表)和map(映射)。
2.三者关系
3.Set
set接口是Collection接口的一个子接口,是无序的,set去重,也就是说set中不存在两个这样的元素a1.equals(a2)结果为true。但是set去重的前提条件是集合对象要重写equals+ hashcode 两个方法。
举个例子,首先先把对象的equals和hashCode方法注释掉,查看用set是否去重
把对象的equals和hashCode方法放开,查看用set是否去重
查看运行结果,两个“张三”只显示了一个,去重了。
TreeSet:在集中以升序对对象排序的集的实现,这意味着从一个TreeSet对象获得第一个迭代器将按照升序来提供对象,TreeSet类使用了一个TreeMap
下面来看一个例子,当需要从一个Set集合中以有序的方式抽取元素时,TreeSet实现会有用处,为了能顺利进行,添加到TreeSet的元素必须是可排序的。
可以看到上面的输出是无序的,且没有重复,下面的输出就是按照首字母的顺序进行排序。
4.List
List接口继承了Collection接口是一个允许重复项的有序集合。
有2种List,ArrayList和LinkedList,两种list的结构不一样,结构如图
ArrayList:由数组实现的List,允许对元素进行快速随机访问,但是向List中间插入(这里的插入是向集合中间插入或正在扩容时)与移除元素的速度很慢。
LinkedList:对顺序访问进行了优化,向List中间插入与删除的开销并不大,随机访问则相对较慢,(使用ArrayList代替)
原文地址:https://www.cnblogs.com/cyying/p/15012076.html
- 亚马逊AI主任科学家李沐:机器学习简介
- 什么是负载均衡?
- 推荐|14种模型设计帮你改进你的卷积神经网络(CNN)!
- 【源码】Python的开源人脸识别库:离线识别率高达99.38%
- 如何使用深度学习去除人物图像背景
- 开源|人脸检测的C / C ++源代
- Python高性能计算库——Numba
- 最新|官方发布:TensorFlow 数据集和估算器介绍
- 干货 | PyTorch相比TensorFlow,存在哪些自身优势?
- 用TensorFlow和TensorBoard从零开始构建ConvNet(CNN)
- 从零开始:手把手教你安装深度学习操作系统、驱动和各种python库!
- TensorFlow中的那些高级API
- 特征工程之Scikit-learn
- 浅谈NumPy和Pandas库(一)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 你知道C语言中的危险函数吗?
- python与安全(四)shell反弹
- 怎么快速修复 bug ?
- 变量类型(cpu/gpu)
- 【Go语言学习】匿名函数与闭包
- Python中两种UnboundLocalError的解决方法
- 传智播客OA项目学习--阶段二(实体设计及技巧)
- 小生归一(五)md5扩展长度攻击
- 传智播客OA项目学习--阶段二(系统管理模块)
- main函数中的argc和argv到底是个啥?
- 传智播客OA项目学习--阶段一(2、框架整合)
- 微信XML消息model定义之微信公众平台(一)
- 自动返回笑话接口调用之微信公众平台(二)
- 「实战」 缘分使我们(骗子)相遇
- json-lib简单使用之微信公众平台(三)