集合是用于存储数据的容器。
特点:对象封装数据,集合存储对象。对象个数确定是可以用数组,不确定是用容器,因为容器长度可变。
集合与数组的区别:1,数组长度固定,而容器可变 2,数组可以存储引用数据类型、基本类型数据,而集合只存引用数据类型 3,数组内的数据必须类型一致,而容器不需要
因为存储数据的底层算法不同,即数据结构不同,所以会有多种容器,在使用时更具需求选定最适合的容器。
collection接口:
添加:add(); addAll()
删除:clear() remove() removeAll()
判断:contains(obj) containsAll(Collection) isEmpty()
获取:int size()
取交集: retainAll(Collect)
获取所有元素:iterator()
将集合变成数组: toArray();
Iterator:是一个接口,用于取集合中的数据。hasNext() next() remove()
list是collection的子接口。list集合有索引,所以是有序的。包括 AarryList 底层数据结构是数组,线程不同步。有索引,所以元素查询快。 linklist 底层数据结构是链表,线程不同步,元素增删的速度快。 vector 底层数据结构是数组,线程同步,查询增删都慢。
set:接口中方法与Collection中的方法一致。set接口取出方式只有一种,迭代器。
包括hashset:底层是哈希表,线程不同步。无序,高效。 没有重复元素,保证唯一性需要重写equals()方法和hashcode()方法。 TreeSet::对set集合中的元素进行排序。不同步,底层是二叉树。若元素不具备比较性,则须实现Comparable接口,复写compareto()方法,或者让集合具备比较性,实现Comparator接口,并覆盖compare()方法。并将该类对象作为实参传递给TreeSet集合的构造方法。
Map集合和Collection集合不同。 Collection一次存一个元素,Map集合一次存一对元素(键,值,映射)。 hashmap底层是哈希表结构,线程不同步,可存null,null,替代了hashtable。 treemap底层是二叉树,对map集合元素进行指定顺序排序。