集合
集合类是Java数据结构的实现
-
长度:集合长度不固定,数组长度固定
-
存放的数据类型:集合不能存放基本数据类型,数组可以存放所有类型
-
集合的继承体系:
Collection(接口)
-
List(有序)
-
ArrayList
-
LinkedList
-
-
Set(无序)
-
HashSet
-
TreeSet
-
-
Iterator(就扣)(迭代器)
-
-
集合的常用方法
-
方法 描述 boolean add(Object o) 该方法用于向集合里添加一个元素,添加成功返回true void clear() 清除集合里的所有元素,将集合长度变为0 boolean contains(Object o) 返回集合里是否包含指定元素 boolean containsAll(Collection c) 返回集合里是否包含集合c里的所有元素 int hashCode() 返回此collection的哈希码值 boolean isEmpty() 返回集合是否为空,当集合长度为0时,返回true Iterator iterator() 返回一个Iterator对象,用于遍历集合里的元素 boolean remove(Object o) 删除集合中指定元素o,当集合中包含了一个或多个元素o时,这些元素将被删除,该方法将返回true boolean removeAll(Collection c) 从集合中删除集合c里包含的所有元素,如果删除了一个或一个以上的元素,返回true boolean retainAll(Collection c) 从集合中删除不在集合c里包含的元素,如果删除了一个或一个以上的元素,返回true int size() 返回集合中的元素个数 Object[] toArray() 该方法把集合转换成一个数组,所有集合元素变成对应的数组元素 -
什么是集合:
-
集合是Collection
-
Collection、List、Set是接口,都不能创建对象,直接创建为匿名内部类
-
有两个是实现类,List、Set
-
常用的几个子接口和实现类:
-
Collection ——> List ——> ArrayList类
-
Collection ——> List ——> LinkedList类
-
Collection ——> List ——> HashSet类
-
Collection ——> List ——> Sorted Set接口 ——> TreeSet类
-
Map ——> HashMap类
-
Map ——> Sorted Set接口 ——> TreeSet类
Integer类覆写了equals方法
迭代器
用来遍历集合中的元素
-
for与iterator对比:
-
Iterator的好处在于可以使用相同方式去遍历集合中元素,而不用考虑集合类的内部实现。
-
使用Iterator来遍历集合中元素,如果不再使用List转而使用Set来组织数据,则遍历元素的代码不用做任何修改。
-
使用for来遍历,那所有的遍历此集合的算法都得做相应调整,因为List有序,Set无序,结构不同,他们的访问算法也不一样
-
for循环需要下标
-
-
主要方法:
-
方法 描述 Boolean hasNext() 如果被迭代的集合有下一个元素,则返回true Object next() 返回集合里下一个元素 void remove() 删除集合里上一次next方法返回的元素 -
并指向下一个元素
-
hasNext() 判断是否有下一个元素
-
next() 返回下一个元素,并且指向下一个元素
-
remove() 删除集合中的迭代器当前指向的元素
-
-
迭代器对象创建后到消亡时间段内,不允许创建和删除集合的元素
-
迭代器只能用一次
List
特点:(有序可重复)
-
List是一个有序集合,即存入集合的顺序和取出的顺序一致
-
List集合允许添加重复的元素
-
ArrayList:底层采用了数组这种数据结构。优点:查询效率高。缺点:随机增删元素,效率较低
-
方法 描述 void add(int index, Object element) 将元素element插入到List的index处 boolean addAll(int index, Collection c) 将集合c所包含的所有元素都插入在List集合的index处 Object get(int index) 返回集合index处的元素 int indexOf(Object o) 返回对象o在List集合中出现的位置索引 int lastIndexOf(Object o) 返回对象o在List集合中最后一次出现的位置索引 Object remove(int index) 删除并返回index索引处的元素 Object set(int index, Object element) 将index索引处的元素替换成element对象,返回新元素 List subList(int fromIndex, int toIndex) 返回从索引fromIndex(包含)到索引toIndex(不包含)处所有集合元素组成的子集合
-
-
LinkedList:底层采用了双向链表这种数据结构,优点:随机增删元素效率较高。缺点:查询效率低。
方法 描述 void add(int index, Object element) 将元素element插入到List的index处 boolean addAll(int index, Collection c) 将集合c所包含的所有元素都插入在List集合的index处 Object get(int index) 返回集合index处的元素 int indexOf(Object o) 返回对象o在List集合中出现的位置索引 int lastIndexOf(Object o) 返回对象o在List集合中最后一次出现的位置索引 Object remove(int index) 删除并返回index索引处的元素 Object set(int index, Object element) 将index索引处的元素替换成element对象,返回新元素 List subList(int fromIndex, int toIndex) 返回从索引fromIndex(包含)到索引toIndex(不包含)处所有集合元素组成的子集合 -
ArrayList与LinkedList的区别
-
底层区别:
-
ArrayList 数组
-
LinkedList 双向列表
-
-
操作区别:
-
ArrayList 查询和修改元素快
-
LinkedList 新增和删除元素快
-
-