集合的由来
1. 处理多个相同数据我们采用数组,但数组空间固定不能动态增长,插入或删除元素比较麻烦,才采用集合解决
2. 集合特点:元素类型可以不同、集合长度可变、空间不固定。
框架:
1. 为了解决某个元素问题,预先设计好的一系列,既有继承或实现关系的类的接口
2. Collection:
1. List:列表、线性:有序,表示集合当中元素的放置是有序的,
是指在集合内部可以通过前一个元素找到下一个元素
2. Set:集;集合当中的元素不能重复,使用自己内部的一个排列机制放置元素
(1. 操作一列数据,而且数据不重复
Set()方法,有add()-向集合中添加元素
remove(Object o)-将元素从集合中移除
size()-查看集合的长度)
3. Map:映射;存放数据都是键、值、对的形式,(键-值)键是不能重复的,
4. Iterator:迭代器,遍历集合;
3. Compparable--Comparator:比较器(写入的是规则)
集合的选用限制
1. 操作一列数据,而且数据有重复时选择List接口的实现类
2. List接口的实现类的选择
1.ArrayList:使用最广泛,几何元素增加或删除操作
3. 泛型:帮助我们某个集合对象,只允许放入某种类型元素
- ArrayList:底层实现用的数组,存放的元素都是在连续的内存空间中。
- LinkedList:底层实现使用的是链表,不是普通的链表,是双向链表,存放的元素没有连续的,每个元素后面都有下一个元素的引用;双向链表指 ,还能通过后面一个元素找到前一个元素。
- Vector:线程更加安全,底层结构也是数组
- 所有的集合都是存放的引用数据类型
一旦重写了equals方法,也要重写Hashcode()方法,来判断两个对象是否重复;要求:equals返回true,hashCode值要相同;
结论: 1. 一旦重写了equals方法,也要重写Hashcode()方法 , equals返回true,hashCode值要相同; 2. equals返回false,不要求hashCode返回值不相同;
Map接口
.1 .Map接口不是Collection接口的继承。Map接口用于维护键、值、对(key/value pairs)。
方法:put()-将键值对存入集合
get()-根据键取出元素的值
keySet()-将Map中的所有的键取出形成一个Set
value()-将Map中的所有值取出形成一个Collection
remove()-根据键移除值
-
Comparable:内部比较器
返回int指代是:this对象的索引-o对象的索引 返回正数-o排在this前面 返回负数-o排在this后面 返回0----o与this在位置上没有前后之分
- Comparator:外部比较器