20220806 第七小组 王茜 学习笔记
作者:互联网
一:
List:数据是有顺序(添加的先后顺序)的,数据是可以重复。
ArrayList:内部结构是数组。比较适合做高频率的查找,遍历。
LinkedList:双向链表。比较适合做高频率的新增和删除。
Vector:和ArrayList几乎一模一样。
面试题:
1.Collection和Map接口的区别
2.ArrayList和LinkedList的区别
3.ArrayList和Vector的区别
二:
Collection接口:
List:有顺序,元素可以重复,顺序指的是添加的先后顺序
Set:没有顺序,元素不可以重复,顺序指的是添加的先后顺序
Set其实是有顺序,内部有一个专门排序的算法。
1.所谓的无序不等于随机
2.所谓的无序指的是没有按照添加的先后顺序,其实内部是做了排序的。
面试题:
1.List和Set的区别
2.HashSet和LinkedHashSet的区别和联系
三:
TreeSet
排序规则:
要排序的对象的类必须实现Comparable接口
四:
LinkedHashSet:在添加数据的同时维护数据的添加顺序
效率要比HashSet略低一些。
五:
比较接口:
Comparable接口:自然排序,排序规则是固定。
Comparator接口:临时排序
六:
Map接口:
1.存储对值K-V key-value
2.key不能重复,value是可以重复的
3.没有顺序(添加的先后顺序)
HashMap内部存储结构:
jdk1.7之前:链表 + 数组
jdk1.7及之后:链表 + 数组 + 红黑树
HashMap基本上面试90%问原理!!!
七:
Hashtable和HashMap几乎一模一样
面试题:
Hashtable和HashMap的区别
1.HashMap是线程异步,线程不安全的,Hashtable是线程同步,线程安全
2.HashMap的key是可以为null的,Hashtable是不可以为null
八:
Properties:属性
Properties是Hashtable的子类,更多地是用来操作属性文件。
九:
List集合的遍历:
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Objects;
/**
* 迭代器删除元素
*/
public class Ch04 {
public static void main(String[] args) {
LinkedList<String> list= new LinkedList<>();
list.add("tom");
list.add("lucy");
list.add("lucy");
list.add("lucy");
list.add("jerry");
// 1、普通for循环
for (int i = 0; i < list.size(); i++) {
if (Objects.equals(list.get(i), "lucy")) {
list.remove(i);
i--;
}
}
// 2.foreach语句
for (String s : list) {
System.out.println(s);
}
// 3、使用迭代器
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
String s = iterator.next();
if (Objects.equals(s,"lucy")){
iterator.remove();
}
}
// 4.增强for循环
for (String s : list) {
if(Objects.equals(s,"lucy")){
list.remove(list.indexOf(s));
}
}
System.out.println(list);
}
}
十:
其他的集合:
1.LinkedHashMap,在HashMap的基础上维护了一个双向链表。
2.TreeMap:天然支持排序
3.Collections:Collections是一个工具类
十一:
面试题:
线程安全问题:
迭代器是依赖于集合而存在,在判断成功以后,集合中新增了元素,
迭代器不知道,所以就报错。
解决:
1.迭代器遍历元素,迭代器删除元素
2.普通for循环遍历,集合删除
十二:
集合需要掌握的:
1.如何创建需要的集合。多态
2.主要用到的是List和Map
3.各种区别?
4.各种集合API的调用
5.两个比较接口
6.各种集合的特点,从接口层面,到实现类层面
7.重点集合的内部结构。ArrayList,HashSet,HashMap
8.各种集合的遍历
9.并发问题
最重要的集合:
ArrayList、HashMap
积压的问题:
1.synchronize原理
2.ReentrantLock原理
3.ArrayList原理
4.LinkedList原理
5.HashMap原理***************
6.HashSet原理
List->Map->Set
标签:HashMap,ArrayList,list,笔记,20220806,接口,集合,排序,王茜 来源: https://www.cnblogs.com/wx1019/p/16557638.html