2022-08-06 第四组 王佳齐 学习笔记
作者:互联网
思维导图
LinkedList:内部结构是双向链表,适合高频率的查找和遍历
面试题:
1.Collection和Map的区别Colllection存储单值,Map存储对值
2.ArrayList和LinkedList的区别ArrayList内部结构是数组,LinkedList内部结构是双向链表
3.ArrayList和Vector的区别几乎一模一样,ArrayList是JDK1.2出现,Vector是JDK1.0出现最本质区别:ArrayList是线程异步的,线程不安全,Vector是线程同步的,线程安全StringBuffer和StringBuilder区别StringBuffer是线程同步的,线程安全,StringBuilder是线程异步的,线程不安全
setList和Set的区别List有顺序(添加的先后顺序),元素可重复;Set无序(添加的先后顺序),元素不可重复
Set泛型接口
Set其实是有顺序的,内部专门有一个排序的算法
无序不等于随机,所谓的无序是指没有按照添加的顺序,其实内部是
有一个算法用来排序的。
Set集合所谓的不能有数据重复,实际上默认比较地址
实现类HashSet
Set集合如何确保数据不重复?
保证数据类型的类要重写Hashcode和equils方法
Hashcode和equils重写
实现类TreeSet
排序规则
排序对象的类必须实现comparable接口
实现类LinkedHashSet(继承于HashSet)
在添加数据的同时会维护数据的添加顺序
操作数据的效率比HashSet略低,同样不能get()
面试题HashSet和LinkedSet的区别与联系比较接口
comparable:
自然排序,排序规则是固定的
comparator:
临时排序
Map泛型接口
1.用来存对值K-V key-value
2.key不能重复,value可重复
3.无序
实现类HaskMap
HashMap内部存储结构JDK1.7之前是:链表+二叉树JDK1.8之后及1.7是:链表+数组+红黑树HashMap基本上面试90%问原理实现类Hashtable
面试题Hashtable和HashMap的区别?1.HashMapJDK1.2出现,是线程异步,线程更不安全的2.HashtableJDK1.0出现,是线程同步的,线程安全的1.HashMap的key可以为空2.Hashtable不可以为null实现类LinkedHashMap
Properties:属性
是Hashtable的子类
更多的是用来操作属性文件(配合io流使用)
集合的遍历
List集合的遍历
1.for循环
2.foreach
3.迭代器:
Iterator
Set集合的遍历
1.增强for
2.迭代器
Map集合
1.增强for循环
2.迭代器
在迭代中删除元素
面试题
Iterator<String> iterator = names.iterator(); while(iterator.hasNext()) { String s = iterator.next(); if(Objects.equals(s,"lucy")){ iterator.remove(); } }
* 其他的集合:
* 1.LinkedHashMap,在HashMap的基础上维护了一个双向链表。
* 2.TreeMap:天然支持排序
* 3.Collections:Collections是一个工具类
面试题并发修改异常
线程安全问题
迭代器是依赖于集合二存在,判断成功以后,集合中如果新增了元
素,但是迭代器是不知道的,所以报错
解决:
1.用迭代器遍历,迭代器删除元素
2.普通for循环遍历,集合删除
集合总结集合需要掌握的
1.如何创建需要的集合,多态
2.主要用到List和Map
3.各种区别
4.各种集合方法的调用
5.两个比较接口
6.各种集合的特点,从接口层面到实现类层面
7.重点结合的内部结构:ArrayList和HashMap和HashSet
8.各种集合的遍历
9.线程并发问题【面试题】最重要的集合就是ArrayList和HashMap
积压的问题:
1.synchronize原理
2.ReentrantLock原理
3.ArrayList原理
4.LinkedList原理
5.HashMap原理***************
6.HashSet原理
List->Map->Set
学习心得:今天接着昨天的集合学习,感觉这部分的知识比多线程好理解一点。
标签:Set,06,王佳齐,迭代,ArrayList,线程,集合,第四组,HashMap 来源: https://www.cnblogs.com/yiboxh-10000/p/16557855.html