集合框架

【集合】---- 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。