java 集合特性面试必备
collection
- 数据结构栈和队列
栈结构 :先进后出
队列结构 :先进先出 - 数据结构之数组和链表
数组结构:查询快、增删慢
队列结构 :查询慢、增删快
- List集合概述
有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素;
与Set集合不同,列表通常允许重复的元素; - List集合特点
有索引;
可以存储重复元素;
元素存取有序 ;
list
q:集合中存放的是什么类型?
引用类型 存的不是对象,而是对象的引用类型,存入int型的也会自动装配成integer
q:ArrayList和linkedList区别?
ArrayList特点:结构实现,查询慢、增删快
linkedList特点: 底层是链表结构实现,查询慢、增删快
set
- hashSet集合的特点
元素存取无序
没有索引、只能通过迭代器或增强for循环遍历,不能存储重复元素
哈希值 :是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值
- TreeSet集合概述
元素有序,可以按照一定的规则进行排序,具体排序方式取决于构造方法
TreeSet():根据其元素的自然排序进行排序
TreeSet(Comparator comparator) :根据指定的比较器进行排序
没有带索引的方法,所以不能使用普通for循环遍历
由于是Set集合,所以不包含重复元素的集合
Q: hashset 和Treeset 的区别是?
hashset 基于哈希表实现,无序,不重,可以放入一个null值
treeset 基于二叉树实现,有序,不重, 不允许为空
Q:HashSet是如何保证元素唯一性的呢?
是通过元素的两个方法,hashCode和equals来完成。
Q:TreeSet是如何保证元素唯一性的呢?
底层数据结构是二叉树,使用二叉树的compareTo方法return 0.
Q:Comparable和Comparator区别?
Comparator位于包java.util下需要元素对象实现Comparable接口,覆盖compareTo方法
Comparable位于包 java.lang下Comparable,需要元素对象实现Comparable接口,覆盖compareTo方法。
Q:List、Map、Set三个接口,存取元素时,各有什么特点?
List 以特定次序来持有元素,可有重复元素;
Set 无法拥有重复元素,内部排序(无序);
Map 保存key-value值,value可多值。
map
- Map集合概述
interface Map<K,V> K:键的类型;V:值的类型
- Map集合的特点
键值对映射关系
一个键对应一个值
键不能重复,值可以重复
元素存取无序
Q: HashMap和Hashtable的区别?
Hashtable是线程安全的 不可以存入null键null值
HashMap线程不安全 可以存入null键null值