什么是集合:存储对象数据的容器。
1、为什么使用集合:
数组的缺点:长度固定。
需求:动态的变化长度,集合可以满足数据条数的编号;
2、集合的由来:
数组长度是固定添加的元素,超过了数组的长度时需要对数组重新定义,太麻烦,java内部给我们提供了集合类能存储任意对象长度时可以改变的,随着元素的增加而增加,随着元素的减少而减少。
3、集合的特点:
类集实际上就是一个动态的对象与数组不同,类集中的对象内容可以任意扩充。
4、集合和数组的区别:
1、数组既可以存储基本数据类型,又可以存储引用数据类型,存储的是值,引用数据类型存储的是地址值。
集合只能存储引用数据类型(对象)集合也可以存储基本数据类型,但是在存储的时候会自动装箱变成对象。
2、数组长度时固定的不能自动增长。
集合的长度时可变的,可以根据元素的增加而增长。
5、集合框架:

java.until(包下)
	Collection:一次存储的是单个对象
	Map:一次存储一对儿
	Collecton是一个接口:
		public interface Connection{}

6、list接口:有序,可以重复
每个元素都有自己的唯一表示,通过表示获取,指定的元素,因此重复不收影响。
set接口:无序不可以重复
每个元素没有自己的表示,这种情况下,数据发生了重复就无法确定要找的是哪一个。
7、Map接口:
以key—value键值对的形式存储。
key不能重复,value可以重复
常用类:Arraylist,Linkdist,Vector
8、Arraylist,Linkdist,Vector的区别
Arraylist:数组实现,线程不安全,对该集合数据查询效率高
Linkdist:链表实现,线程不安全,对集合数据,新增删除效率高
Vector:数组实现,线程安全,效率低
9、Set:无序,不重复,sete集合要保证唯一不可重复的就需要去重
HashSet:哈希值,存储数据
1、使用hashcode计算哈希值
2、哈希值如果不同,可以直接录入存储
3、好细致如果想通,调用equals函数比较内容
Treeset:
底层:红黑二叉树(两个数进行比较,小的放在左,大放右)
10、Collection中常用的方法

添加:
	add(E,e),将制定的元素添加到集合中,返回值boolean可以反馈给用户添加是否成功,一次添加一个元素。
	addAll(Collection,c),将一个集合直接添加到另一个中去。
删除:
	clear();清空集合
	remove(Object obj);删除指定的元素,返回值是boolean。
	removeAll(Collection c);从原来集合中删除其中的一个集合
判断:
	contains(Object obj);判断是否包含某个指定的元素
	isEmpty();判断集合是否为空;当集合的长度为0是返回true
转换:
	toArray();将集合转换为数组
获取:
	size();获取集合的长度

11、list中独有的方法(只要方法的参数中有下标,就是list接口独有的方法)

添加:
	add(int index,E e)将元素添加到指定位置
删除:
	remove(int index);删除指定位置的元素,返回值是Object高职用户删除具体信息
	remove(Object obj);
获取:
	get(int index);获取指定位置的元素
修改:
	set(int index,E e);

12、LinkedList的常用方法

添加:addFirst;添加第一个
	  addLast;添加最后一个
删除:removerFirst();删除第一个
	  removeLast();删除最后一个

13、Map的常用方法

添加:put(key value);添加一组键值对到集合中。
判断:containkey();判断是否包含指定的key值
	  containsValue:判断是否包含指定的value值
	  isEmpty();判断集合是否为空
获取:get(key);通过key获取对应的value值
	 keySet();获取所有的key值,Set集合
	 size();返回集合的长度。
	 values();获取所有的value值
删除:Clear();清空集合中的数据
	 remove(key);通过key删除键值对。
遍历:entrySet();遍历map集合。

14、遍历
迭代器遍历:

Interator it=c.iterator();
while(it.hasNext()){
	Object obj=it.next();
	System.out.println(obj);
}

逆序迭代器:

Iterator it = list.iterator();
        while(listIt.hasPrevious()){
       System.out.println(listIt.previous());

普通for循环:

for(int i = 0;i < list.size(); i ++){
    System.out.println(list.get(i));
}

增强版for循环:

for(String attribute : list) {
     System.out.println(attribute .getId()+" *"+attribute .getName());
}