1.使用集合的目的?
使用可变长度的容器来存储对象。
2.集合和数组的区别?
集合:变长、只存储对象、同一集合可存储不同对象
数组:定长、可存储任意类型(使用泛型时只可以存储泛型指定的类型)、同一数组只可以存储一种类型
3.单列集合:
统治者:Collection
通用迭代器:Iterator(只有实现了Iterator接口或者ListIterator的集合才可使用增强for循环)。此迭代器除了迭代只可以对集合进行删除操作,还支持双向迭代
List家族的迭代器:ListIterator,此迭代器可以对元素进行增删查改操作;
小插曲:使用迭代器的时候不可使用集合自己的方法对集合进行操作,否则出现并发修改异常;
各司其职的官员:
List(有序可重复,可以通过索引值操作元素)----Vector(有两种迭代器,线程安全,不推
荐使用)
-----ArrayList
------LinkedList
Set(无序不可重复)-----HashSet:散列存放(查询速度快)----LinkedHashSet:有序
-----TreeSet:有序存放(自然排序:实现Comparable接口;外置比较器:实现Comparator接口)
小插曲:HashSet:集合往集合里存储数据每次都要都要调用hashCode和equals方法,注意,两个对象的equals相等时,应该保证哈希值也相等,否则会出现对象存入集合删不掉的情况,这样会导致内存泄露;
4.双列集合:
统治者:Map
Map内部接口:Map.Entry封装键值对
各司其职的官员:
Map(键值对,键不可重复)---HashMap
---TreeMap
输出方式:借助单列集合的迭代方式
Map->Map.Entry的set集合-->迭代set集合得到键值
Map->Map的key集合-->迭代set集合得到键从而得到值
5.工具类:Collections提供了各种操作集合的方法,如排序、查找元素等。
小插曲:Arrays是数组的工具类
public static List asList(Object... a)返回的是一个固定长度的集合,不可再添加元素