List是存储对象的容器,可以存储任意类型的对象且长度可变,List的存储对象是有顺序的,可重复的。
<1> List的接口框架
ArrayList实现类通过数组实现,在向集合中增加或删除时,需要对集合进行增容和拷贝,所以增删慢;而数组可以直接通过索引进行查找,所以查询快;一般查询多增删少的,优先选择ArrayList集合。
LinkedList实现类通过链表实现,在向集合中增加或删除时,无需扩容,所以增删快;但是不能通过索引进行定位查找,需要检索全部,所以查慢;一般增删多查询少的,优先选择LinkedList集合。
Vector实现类也是通过数组实现,是线程安全的,所以一般效率较ArrayList低。
<2> List接口的方法
增加 add(Object object); 将指定对象存储到List容器中。addAll(List list); 将指定集合中的元素存储到List容器中。
删除 remove(Object object); 将指定对象从容器中移除。removeAll(List list); 移除容器中与指定集合中的元素相同的元素。clear(); 清空容器中的所有元素。
修改 set(Integer index,Object object); 将容器中指定位置的元素修改成指定元素。
判断 isEmpty(); 判断容器是否为空。contains(Object object); 判断容器中是否包含指定对象。containsAll(List list); 判断容器中是否包含指定集合中的所有元素。
获取 size(); 获取容器元素的数量。get(Integer index); 获取指定位置的元素。indexOf(Object object); 获取指定对象的位置索引,没有返回-1。lastIndexOf(Object object); 获取指定对象在容器中最后一次存储位置的索引。
Set也是存储对象的容器,可以存储任意类型的对象且长度可变。
<1> Set的接口框架
HashSet实现类按照哈希算法来存取对象的,是无序的,不可重复,但是null和"null"同时存在,会显示[null,null],是Set接口的最优实现,其底层实现依赖于HashMap的键不能重复特性,
TreeSet实现类使用红黑树来存储元素,实现了sortedSet接口,是有序存储和访问,不能写入null。
LinkedHashSet实现类也是按照哈希算法存取对象的,是有序的,不可重复,但是null和"null"同时存在,会显示[null,null],其底层依赖于LinkedHashMap。
<2> Set接口的方法
并 addAll(Set set); 将指定集合中的元素并入容器中,并去重。
交 retainAll(Set set); 将指定集合中元素与容器中元素取交集。
删除 removeAll(Set set); 移除容器中与制定集合中的元素相同的元素。remove(Object object); 将指定对象从容器中移除。
判断 isEmpty(); 判断容器是否为空。contains(Object object); 判断容器是否包含指定对象。containsAll(Set set); 判断容器是否包含指定集合的所有元素。clear(); 清空容器中的所有元素。
获取 iterator(); 遍历容器中的元素。
Map也是存储对象的容器,以键-值的形式存储对象,键对象不可重复可为null,值对象可重复可为null。
<1> Map的接口框架
HashMap实现类按照哈希算法存取键对象,无序的且不可重复
TreeMap实现类使用红黑树存储键对象,有序的
<2> Map接口的方法
获取 get(Object key); 根据指定的key对象获取容器中键对应的值。entrySet(); 将容器中的所有键值对以key=value的形式保存在Set集合中。keySet(); 将容器中的所有键对象保存在Set集合中。 iterator(); 遍历容器中的元素
添加 put(Object key,Object value); 将指定的键值对添加到容器。
删除 remove(Object key); 移除容器中与指定key对象相同的键值对。
判断 isEmpty(); 判断容器是否为空。contains(Object object); 判断容器是否包含指定对象。containsAll(Set set); 判断容器是否包含指定集合的所有元素。clear(); 清空容器中的所有元素。