一、数组、集合 
数组、集合:都是一种容器,用一个对象管理多个对象; 
数组:不能自动增长;只能存放同类型的元素 
集合:能自动扩容;部分集合允许存放不同类型的元素; 
二、学习这些集合类要掌握哪些东西: 
1)怎样得到(选择)集合对象; 
2)怎样添加元素 
3)怎样删除元素 
4)怎样循环遍历没一个元素 
三、list、set、map 
collection:父接口; 
Set:接口 ---一个实现类: HashSet 
List:接口---三个实现类: LinkedList,Vector,ArrayList 
SortedSet:接口---实现类:TreeSet 
1、List: 
List:有序列表,允许存放重复的元素; 
实现类: 
ArrayList:数组实现,查询快,增删慢,线程不安全,轻量级;下标也是从0开始; 
LinkedList:链表实现,增删快,查询慢 
Vector:数组实现,线程安全,重量级 
2.Set: 
无序集合,不允许存放重复的元素; 
实现类 HashSet:equals返回true,hashCode返回相同的整数;哈希表; 
  
子接口SortedSet:对Set排序 实现类 :TreeSet:二叉树实现的; 
看API:<E> 泛型:表示一个对象; 
Iterator:接口,迭代器; 
java.util; 
hasNext(); 
next(); 
remove(); 
Iterable:可迭代的,访问的 ; 
java.lang;实现了可迭代的接口就可以用迭代的方式访问; 
只需实现 iterator();方法即可;Iterator iterator(); 
三种循环的访问方式: 
for(int i=0;i<list.size();i++){ 
System.out.println(list.get(i)); 

   Iterator it=list.iterator(); 
while(it.hasNext()){ 
System.out.println(it.next()); 

   for--each 循环: 
for(Object obj:list){ 
System.out.println(obj); 

  
  
只有实现了Iterable接口的才能用第三种;能用第二种的也一定能用第三种; 
ArrayList:自动扩容,是数组照搬过来的; 
3.Map 
HashMap:键值对,key不能重复,但是value可以重复;key的实现就是HashSet;value对应着放; 
HashSet 的后台有一个HashMap;初始化后台容量;只不过生成一个HashSet的话,系统只提供key的访问; 
如果有两个Key重复,那么会覆盖之前的; 
  
Hashtable:线程安全的 
Properties:java.util.Properties; key和value都是String类型,用来读配置文件; 
  
HashMap与Hashtable区别: 
HashMap线程不安全的,允许null作为key或value; 
Hashtable线程安全的,不允许null作为key或value; 
  
TreeMap: 对key排好序的Map; key 就是TreeSet, value对应每个key; 
key要实现Comparable接口或TreeMap有自己的构造器; 
HashSet:remove(Object o)的原则看这个对象O的Hashcode和equals是否相等,并不是看是不是一个对象; 
定义一个Map; key是课程名称,value是Integer表示选课人数; 
map.put(cou,map.get(cou)+new Integer(1));