赞
踩
Collection类关系图
单向链表
由若干个节点组成,每个节点除了数据域之外还保存一个指向下个节点的指针域。
优点:
插入/删除元素时,不需要像数组一样还得扩容、复制/移动元素,只需要修改一下next指针域即可。
缺点:
访问时,总是从第一个结点依次向后访问,只能向后访问,不能向前访问。
LinkedList底层采用双向链表
使用LinkedList模拟栈结构。栈结构特点:后进先出。
Push()
Pop()
使用LinkedList,模拟队列。队列:先进先出。
Offer()
Poll();
HashSet
底层是HashMap
TreeSet
可以对元素排序,要求元素必须是可以比较的。
TreeSet是先选择Comparator,没有Comparator再选择
Comparable。
TreeSet的底层是TreeMap
TreeSet如果比较两个元素相同,只能存在一个。
要非常注意,比较方法。TreeSet集合根据Comparator/Comparable的比较结果是否为0,来判断元素是否为同一个元素的。
==================================
3.5 Collection小结
Collection单个存储
基本操作:
add(o), remove(o), contains(o), size(),
iterator() ? hasNext(), next(), remove()
----List
特点:
有序,存储顺序与添加顺序一样
可重复,可以存储重复的数据
为每个元素指定一个索引值
新增的操作:
add(inex, o ), remove(index), get(index), set(index, newValue)
sort(Comparator)
--------ArrayList
底层是数组, 访问快,添加删除慢
初始化容量:10
扩容: 1.5 倍
--------Vector
底层是数组, 它是线程安全的, ArrayList不是线程安全的
初始化容量: 10
扩容: 2倍
--------LinkedList
底层是双向链表, 添加/删除效率高,访问慢
新增的操作:
addFirst(o) / addLast(o)removeFirst()/removeLast()
getFirst()/getLast()
push(o)/pop()
offer(o)/poll()
*******应用场景***************************************************
存储可以重复的数据选择List集合
如果以查询访问为主,选择ArrayList
如果频繁的进行添加/删除操作,选LinkedList
如果开发多线程程序,选择juc包中的CopyOnWriterArrayList
-------注意------------------------------------------------------------------------------------------------
List集合,在contains(o), remove(o)操作时,需要比较元素,调用equals()方法
如果在List存储自定义类型数据,需要重写equals()/hashCode()
----Set
特点:
无序:存储顺序与添加顺序可能不一样
不可重复,存储的数据不允许重复
--------HashSet
底层是HashMap
向HashSet添加元素就是把该元素作为键添加到底层的HashMap中
HashSet就是HashMap键的集合
--------TreeSet
TreeSet实现了SortedSet接口,可以对元素自然排序,要求元素必须 是可比较的
(1)在构造方法中指定Comaparator比较器
(2)没有Comaprator,需要让元素的类实现Comaparable接口
TreeSet是先选择Comparator,在没有Comparator的情况下,再选择Comparable
TreeSet底层是TreeMap
向TreeSet添加元素就是把该元素作为键添加到底层的TreeMap中
TreeSet就是TreeMap键的集合
******应用场景*******************************************************
如果存储不重复的元素使用Set集合
如果不需要排序就使用HashSet
如果需要排序就选择TreeSet
-----注意--------------------------------------------------------------------------------------------------
HashSet中的元素需要重写equals()/hashCode()方法
TreeSet集合中判断是否相同的元素, 根据Comparator/Comparable比较结果是否为0来判断
===========================================
Map是以键值对存储数据
原文:https://www.cnblogs.com/Tpf386/p/11153728.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。