Collection单列集合中的常用实现类
Collection 集合层次的根接口
List 有序 有索引 可以重复
ArrayList
底层数据结构是数组 查询快 增删快
线程不安全 效率高
LinkedList
底层数据结构是链表 查询慢 增删快
线程不安全 效率高
Vector
底层数据是数组 查询和增删介于前两者之间
线程安全 效率低
Set 唯一
在调用add()方法时:
在底层中以map的形式存储,存储时调用元素的hashCode(),equals(),map会自动比较key值(就是hash值)
先比较hash值
如果对象的hash值不相等,直接添加元素到集合
如果对象的hash值相等 判断equals
如果相同 不添加
如果不相同 添加 //不直接用equals是为了提高比较的效率
HashSet
底层是哈希表(数组和链表的结合) 查询和增删都比较快
无序 唯一
通过元素本身的hashCode()和equals()方法保证元素的唯一性
如果元素是基本数据类型和字符串类型一般都已经重写了hashCode()和equals()这两种方法了,可以直接存储
如果集合存储自定义数据类型时就需要自己重写这两个方法(快捷键 shift + alt + s)
重写hashCode()
A:如果数据是基本数据类型,hashCode值一般是本身,
如果是引用数据类型,直接调用hashCode()方法即可(相当于调用了继承自父类的hashCode())
B:一般可以添加一个中间值来处理hash值小了容易相等的情况 (*31)
LinkedHashSet
有序 唯一
底层数据链表 + 哈希表(数组和链表的结合)
链表来保证有序 哈希表保证元素唯一
最新文章
- HTML 基础篇
- Android Frameworks层介绍
- 代码生成的地址:mygeneration
- iOS网络-03-NSURLSession与NSURLSessionTask
- php 数组定义、取值和遍历
- [Cocos2d-x For WP8]MotionStreak拖尾效果
- Nginx SSL配置过程
- debug,trace,release项目配置区别
- setsockopt()使用方法(參数具体说明)
- javascript异步加载详解(转)
- 4 Java学习之 反射Reflection
- 第01讲- Android背景知识
- flex容器解析
- 架构设计的UML图形思考
- python查询mysql中文乱码问题
- iOS 图片裁剪 + 旋转
- JS中闭包、函数与对象的介绍和用法
- php短信接口代码
- vxWorks下intel82567v3网卡驱动的更新
- 英语词汇周计划(1-1)group 1
热门文章
- redis集群报错:(error) MOVED 5798 127.0.0.1:7001
- 给标签设置disabled属性后提交不了数据
- 在linux中的rpm -ivh 是干什么的呢?
- Android 防止多次点击提交数据
- Java-Class-C:java.util.ArrayList
- 创建 Angular 8.0 项目
- Python实现字符串与数组相互转换功能示例
- Harbor任意管理员注册漏洞复现CVE-2019-16097
- 剑指offer——04从尾到头打印链表
- mybatis 处理CLOB/BLOB类型数据