Collection集合总结
Collection 是单列集合的根接口。
----------------------| List实现了List接口的集合其特点元素存储和获取有序的元素可重复
----------------------------| ArrayList
底层数据结构是Object数组,特点:查询快,增删慢。
线程非安全,效率高
----------------------------| Vector
底层数据结构是Object数组,特点:查询快,增删慢。
线程安全,效率低
---------------------------| LinkedList
底层数据结构是链表数据结合,特点:查询慢,增删快。
线程非安全,效率高
-----------------------| Set实现了Set接口的集合其特点元素存储和获取是无序的,元素是唯一的不可重复
---------------------------| HashSet
底层数据结构是哈希表。
HashSet依赖两个方法:hashCode()和equals()来判断是否是重复元素
---------------------------------------| LinkedHashSet底层数据结构是链表和哈希表
由链表保证元素的存储与获取有序
由哈希表保证元素唯一的不可重复的
----------------------------| TreeSet
底层数据结构是红黑树。TreeSet通过两种方式进行排序:
第一种:自然排序
第二种:比较器排序
TreeSet通过返回值是否是0来判断是否是重复元素
集合与数组都是存储数据的容器他们之间有什么区别?
1、 长度的不同:
数组的长度是固定的,集合的长度是可变的。
2、 内容的不同
数组可以存储基本数据类型也可以是引用数据类型,集合只能存储引用数据类型。
3、 元素的不同
数组只能存储同一种数据类型,而集合可以存储多个不同的数据类型。
集合的体系结构:
由于需求不同,java给我们提供了很多集合类,这些集合类的数据结构不同,而我们要给这些集合类提供存储和遍历功能的,我们把他的功能不断的向上提取出来,这样就形成了集合的体系结构。
集合的种类有很多我们该如何选择呢?
一般我们选择集合是根据开发的需求,如果增删比较多的项目就选择LinkedList集合,如果查找获取比较多的那么就选择ArrayList集合。如果需要对元素进行排序和清除重复元素就需要使用Set接口的实现类集合。
Collection 接口集合的方法:
增加的方法:
add() 添加元素
addAll(Collection<? extends E> c) 添加指定集合中的所有元素到另一个集合中
删除的方法:
clear() 清空集合中的所有元素
remove(Object o) 删除集合中指定的元素
removeAll(Collection<?> c) 删除两个集合的交集元素
retainAll(Collection<?> c) 删除集合中与指定集合所有不同的元素,只保留两个集合的交集元素
判断的方法:
contains(Object o) 判断集合是否包含指定的元素
containsAll(Collection<?> c) 判断集合是否包含指定集合的所有元素
isEmpty() 判断集合是否为空
size() 获取集合的长度
迭代的方法:
iterator() 遍历集合中的所有元素
toArray() 把集合转成数组
hasNext() 判断游标是否指向了一个元素
next() 抓取当前游标指向的元素,然后游标向下移动一个单位
remove() 移除迭代器最后一次返回的元素
add(E e) 在迭代到的元素后面位置添加元素到集合中
注意: 迭代器是依赖集合而存在的,因为集合在迭代的过程中不能添加删除或者修改元素,所以只能通过迭代器的添加删除修改方法,修改集合中的元素。
List接口特有方法:
获取的方法:
indexOf(Object o)获取指定元素第一次出现的索引值
astIndexOf(Object o)获取指定元素最后一次出现的索引值
get(int index)获取指定索引值的元素
subList(int fromIndex, int toIndex) 指定开始开始索引值和结束索引值截取集合中的元素
修改的方法:
set(int index, E element)根据指定的索引值修改集合中的元素
迭代的方法:
listIterator() 继承了Iterator 接口,实现了服接口的所有方法并添加了自己特有的方法
listIterator的方法:
hasPrevious()判断向上是否有元素
previous() 向上获取元素并把游标向上移动一个单元
LinkedList特有的方法:
增加的方法:
addFrist() 添加元素到集合的第一个位置
addLast() 添加元素到集合的最后一个位置
获取的方法:
getFirst() 获取集合的第一个元素
getLast() 获取集合的最后一个元素
删除的方法:
removeFirst() 获取集合的第一个元素
removeLast() 获取集合的最后一个元素