一、什么是集合类
存放对象,集合类位于java.util包内
二、集合和数组的区别
数组:定长,访问速度快,但不会自动扩容,存放基本数据类型或引用类型
集合:自动扩容,存放引用类型的对象
三、集合框架层次结构
四、接口
1、Collection 接口
List和Set的父类
2、list 接口
1)Collection的子类
2)有序有重复
3)可以根据序号存取容器中的元素,如a[0]
4)主要实现类:
ArrayList : 线性存储,大小可以动态改变
LinkedLIst :方便增删改,方便实现堆、栈功能
3、set接口
1)Collection的子类
2)无序无重复
无序:元素的存入顺序和存储顺序不同
无重复:指内容不重复
3)实现类:
HashSet :按照HashCode()来存储,内部散列存取,速度快
TreeSet :按照排序树来存储,且要求各元素间的类型是可比较的
4、Iterator 接口
1)迭代器,方便实现对容器中内的元素进行遍历操作
2)实现Collection接口的实现类,都要一个iterator()方法,返回iterator接口的对象
3)为遍历而设计,只有取元素和删除元素,但没有添加元素,单向移动
5、Map 接口
1) Map存储 key-value 的对象
2) key值是唯一,key与value 对象关联在一起
3) 实现类
HashMap:key-value是按Hash算法存储
TreeMap: key-value是按key排序存储
五、如何选择集合类
1、Set内存放的元素不允许重复,List存放的元素有一定的顺序。
2、Map的应用主要在利用键/值对进行快速查询。
3、ArrayList和LinkedList的区别在于随机查询性能上ArrayList要好,但LinkedList的中间元素的插入与删除性能好。
4、HashSet和TreeSet的区别在于集合内元素是否排序 。
六、实例
1、ArrayList
ArrayList list = newArrayList();
list.add("a");
list.add("c");
list.add("b");
System.out.println(list); //输出结果a,b,c
2、转换为iterator迭代器
//将实现Collection接口的ArrayList转换为迭代器,
Iterator i =list.iterator();
i.next(); //移动下一个
i.remove(); //删除
//循环遍历,输出结果 c、b
while(i.hasNext()){
System.out.println(i.next());
}
3、TreeSet
TreeSet tree = newTreeSet();
tree.add("2");
tree.add("1");
tree.add("4");
tree.add("3");
System.out.print(tree); //[1, 2, 3, 4]
4、HashMap
HashMap h = newHashMap();
h.put("小明","123" );
h.put("小红", "456");
System.out.println(h);