Learn && Live
虚度年华浮萍于世,勤学善思至死不渝
前言
Hey,欢迎阅读Connor学Java系列,这个系列记录了我的Java基础知识学习、复盘过程,欢迎各位大佬阅读斧正!原创不易,转载请注明出处:http://t.csdn.cn/aHb3x,话不多说我们马上开始!
1.介绍一下Java容器的结构?
1.Collection:存储对象的集合
List:元素有序、可重复的集合
(1)ArrayList:基于同台数组实现,支持随机访问,线程不安全,效率高
(2)Vector:和ArrayList类似,但线程安全,效率低
(3)LinkedList:基于双向链表实现,只能顺序访问,但可以实现快速插入、删除,还可以用作栈、队列和双向队列
Queue
PriorityQueue:基于堆结构实现,可用于实现优先队列
Set:元素无序、不可重复的集合
TreeSet:基于红黑树实现,支持有序性操作,如根据一个范围查找元素
HashSet:基于哈希表实现,支持快速查找,但不支持有序性操作,失去元素的插入信息,即使用Iterator遍历时得到的结果是不确定的。线程不安全,可存储null值
LinkedHashSet:内部使用双向链表维护元素的插入顺序的HashSet
2.Map:存储键值对的映射表
TreeMap:基于红黑树实现
HashMap:基于哈希表实现,线程不安全,效率高,可存储null的key和value
HashTable:和HashMap类似,但线程安全,不能存储null的key和value
Properties:常用来存储、处理配置文件,key和value均为String类型
LinkedHashMap:使用双向链表来维护元素顺序,顺序为插入顺序或最近最少使用顺序(LRU)
2.Collection和Collections的区别?
Collection:最基本的集合接口,一个Collection代表一组Object,即Collection的元素。它的直接继承接口有List、Set、Queue
Collections:java.util.Collections,不属于Java集合框架,是集合类的一个工具类。此类不可实例化,包含有关集合操作的静态多态方法,实现各种集合的搜索、排序、线程安全等操作
3.Collection接口的常用方法有哪些?
方法 | 说明 |
---|---|
boolean add(E e) | 向集合添加元素e,成功则返回true |
boolean addAll(Collection<? extends E> c) | 把集合c中的元素全部添加到集合中,成功则返回true |
int size() | 集合中元素个数 |
boolean isEmpty() | 判断集合size是否为0 |
void clear() | 清空所有集合元素 |
boolean contains(Object o) | 判断指定集合是否包含对象o,使用对象的equals比较 |
boolean containsAll(Collection<?> c) | 判断指定集合是否包含集合c的全部元素(equals) |
boolean remove(Object o) | 删除集合中的对象o,若存在多个,则删除第一个(equals) |
boolean removeAll(Collection<?> c) | 删除指定集合包含集合c的全部元素(equals) |
boolean retainAll(Collection<?> c) | 保留指定集合中集合c的全部元素,删除其他元素(equals) |
int hashCode() | 计算集合的哈希值 |