1 List集合
(1)List是Colleciton接口的一个子接口,常用的实现类有ArrayList LinkedList
(2)List集合的特点
(1)存储单个元素,元素可重复,可以存储多个null
(2)存储有序,存入顺序和取出来的顺序一致(例如:add(1);add(2);add(3); 遍历打印集合 1,2,3);
(3)元素具有索引值,所以方法中很多都是具有索引值参数
(3)常用方法(省略Collection中继承的方法)
(1)public void add(int index,E element):添加新元素
(2)public E get(int index):获取对应索引的元素
(3)public E remove(int index):移除对应索引的元素,返回被移除的元素
(4)public E set(int index,E element):替换对应索引的元素,返回被替换掉的元素
(4)常用子类
(1)ArrayList
1)底层采用数组结构,查询快(直接根据索引获取对应元素),增删慢(添加或删除某个元素,需要移动数组中其他数组,如果容量不够,还要重新创建一个数组,将原来的数据拷贝进去,所以速度慢)
(2)LinkedList
1)底层采用双向循环链表,查询慢(要获取某个元素,需要逐级遍历),增删快(直接改变指地址指向即可)
2)LinkedList中特有的一些方法
1)public void addFirst(E e) :将指定元素插入此列表的开头。
2)public void addLast(E e) :将指定元素添加到此列表的结尾。
3)public E getFirst() :返回此列表的第一个元素。
4)public E getLast() :返回此列表的最后一个元素。
5)public E removeFirst() :移除并返回此列表的第一个元素。
6)public E removeLast() :移除并返回此列表的最后一个元素。
7)public E pop() :从此列表所表示的堆栈处弹出一个元素(内部调用removeFirst)
8)public void push(E e) :将元素推入此列表所表示的堆栈(内部调用addFirst)
9)public boolean isEmpty() :如果列表不包含元素,则返回true
2 Set集合
(1)Set是Collection的一个子接口,常用的实现类有HashSet、TreeSet
(2)特点:
1)存储单个元素,元素不能重复,可以存储null,但只能出现一次
2)存储元素不能保证存储有序,是按照底层数据结构规则进行存储;
3)存储元素不具备索引值
(3)常用实现类
1)HashSet
1)底层使用哈希表结构,查询速度快,基于HashMap实现,哈希表结构如图1(元素内部不同但出现计算的hash值相同,就把新元素挂载在旧元素,下形成链表结构,jdk1.8后,如果挂载元素超过8个,从链表变为红黑树结构,提高访问速度);
2)被存储的元素需要重写hashCode和equals方法,HashSet会自动调用这两个方法来判断元素是否重复
2)LinkedHashSet
1)是HashSet的子类,底层采用哈希表+链表的数据结构,实现了存储的有序
3 Collections工具类
(1)常用方法
1)public static <T> boolean addAll(Collection<T> c, T... elements) :往集合中添加多个元素。
2)public static void shuffle(List<?> list) 打乱集合中元素顺序。
3)public static <T> void sort(List<T> list) :将集合中元素按照默认规则排序,元素需要实现Comparable内部比较器
4)public static <T> void sort(List<T> list,Comparator<? super T> ) :将集合中的元素按照传入的外部比较器的规则进行排序,传入外部比较器的方式比较灵活,一般选用这种方式进行比较。