集合框架
【集合】---- JDK1.0开始 java.util.*
数组缺陷:
1、定长的,长度不能改变。int[5]满 ---->int[10]
2、删除。 int[5]{2,4,6,7,7} a[1]=a[2] 最后一个下标的元素没有意义
3、插入 int[5]{2,4,5,6,7} 少了一个最后元素
一套API:丰富(继承层次)。
集合就是容器(装东西),东西只指对象,所以基本数据(值)放不进去(封装类),值类型存储到集合必须装箱。
集合通用功能:
1、往里面加对象
2、删除一个对象
3、查找一个对象
4、更新一个对象
5、清空容器
6、从一个容器往另一个容器倒对象
Collection<接口>
| | |
List<> Set<> Queue<>
| |
ArrayList HashSet
LinkedList TreeSet
Vector(不用)
|
Stack(栈)
Collection<接口>:
add();
clear();
isEmpty();
iterator(); //迭代器
remove(Object o);
size(); 大小
toArray();
List<接口>: 加强版(数组) 类似于数组操作方法
set(int index, E element); //将对象加入到集合指定下标处
get(index); //获得集合中元素
indexOf(Object o); //找到该对象在集合中的下标
SET接口
【set接口】 不能重复,顺序 底层:数组+链表
对象:不能重复。 equals()比较存储值。
hashCode() 散列值运算(下标)
一次:下标(无) 存储
后几次: 下标(有) 调用equals()比较(是否相同,相等-不存储,不相等 使用链表 (父节点)1数-->子节点(2数))
底层:5--->10
loadFactor:加载因子 0.75 16 12 0.25 1
loadFactor:小 浪费内存空间。
loadFactor:大 出现链表几率很大。性能越低。
Map集合
生活:学生姓名 成绩
张三 65
李四 65
存储机制:键--值对 key--value 一个键值对被称为“条目”(Entry),一个Entry包括一个key和一个value
存储时候,首先指定key,然后指定这个key所对应value。
读取时候,通过使用key,得到key所对应的value。
**key在存储的时候,值不能够重复,但是value是可以重复**
Map
| | |
HashMap Hashtable TreeMap
Map接口:
get(Object key); 通过key得到元素
put(K key, V value); 存储一个条目,包括key-value
isEmpty()
size()
clear()
entrySet() 将集合中所有的条目返回,返回set集合。
HashMap (HashSet底层存储HashMap存储)
方法 keySet() 返回当前集合所有的key,是一个set集合。
Map.Entry
方法
对象.getKey(); 得到条目key
对象.getValue(); 得到条目valu
TreeMap (TreeSet底层存储TreeMap存储)
区别就是 自动排序,前提必须实现排序接口Comparable或Comparator
Hashtable和HashMap区别
HashMap里面key或者value是可以存储一个null值,但是只能又一次是null。(因为2次就重复,不能存储重复值key)
Hashtable(线程安全)
HashMap(非线程安全、所以HashMap是HashTable的轻量级的实现,效率上高于Hashtable的)
数组Array,提供一个数组工具类Arrays。
集合也提供一个工具类 Collections。