1. 集合框架中包含哪些集合
Collection
List
ArrayList LinkedList Vector
Set
HashSet TreeSet
Map
HashMap TreeMap
2. List集合与Set集合的特点
List 有序并且允许重复
Set 无需并且不允许重复
3. ArrayList和LinkedList的优缺点
ArrayList : 因为有下标,遍历速度和修改速度快
插入元素和删除元素有可能移动大量元素, 效率较低
LinkedList: 在插入和删除元素的时候 是不需要移动元素,效率较高,遍历修改的时候必须通过前面元素的地址才能找到后面元素,效率较低
4. HashSet添加元素时,执行的流程(提示调用哪些方法以及调用流程)
当调用add方法的时候,add方法内部会自动的调用hashcode计算哈希吗,得到哈希吗之后,会通过哈希表进行比较查看是否有重复元素, 如果没有重复元素,则可以直接添加到集合, 如果有重复元素 则调用equals进行比较. equals方法结果如果为false,则添加到集合, 如果equals的结果为true则不添加
5. TreeSet 添加元素时需要注意什么?
当添加元素的时候,确定泛型中的类是否已经排序
排序有两种方式:
- 自然排序:
(1) 自定义类实现Comparable
(2) 重写compareTo方法,指定排序规则
(3) 创建集合对象向集合中添加元素 - 定制排序:
(1) 额外定义一个比较器的类实现Comparator接口
(2) 重写compare方法,指定排序规则
(3) 创建TreeSet集合对象的时候,在构造方法中添加比较器的对象
如果集合中添加的是自定义类型, 则必须实现排序方式中的一种,否则会包ClassCastException
6. 二叉树遍历方式
前序:中左右
中序:左中右
后序:左右中
7. Map集合的特点
Map<K.V> 每添加元素的时候 必须同时添加一对元素, 存在映射关系 , 叫做键值对
键:无需并且不允许重复, 值: 允许重复
8. 冒泡排序
int[] arr= {5,3,7,1,9};
for(int i = 0; i<arr.length-1;i++){
for(int j = 0; j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
int temp = arr[j+1]
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}