Bootstrap

Java基础回顾 Day2

addAll()合并列表

要获取 List 中指定元素的索引,可使用indexOf()方法,如果元素不存在返回-1。

简述 ArrayList 和 LinkedList 的底层数据结构以及它们在不同操作下的性能差异。

ArrayList底层是动态数组,插入删除移动数组元素效率慢,随机访问效率高
LinkedList底层是双向链表,插入删除快,随机访问需从头遍历频繁访问慢

说明在多线程环境下使用 List 可能遇到的问题以及常见的解决方法。

如果一个线程正在遍历 List,而另一个线程修改了 List(如添加或删除元素),则可能会抛出 ConcurrentModificationException。
解决方法:可以使用 CopyOnWriteArrayList(适用于读多写少的情况),或者使用 synchronized 关键字保证线程安全,或者使用 Iterator 的 remove() 方法来避免并发修改的问题。

entrySet()

返回这个map中键值对表示的set集合。可以理解成将一个map转化成一个set。set中的每一个元素都是Entry数据类型,这个数据类型其实就是一组键值对,有两个属性,分别是键和值,来存放键值对

迭代器Iterator为实现集合遍历,该接口有三个方法

分别是hasNext() next()__、remove()。

hasNext():判断是否有下一个元素。

next():返回下一个元素。

remove():移除迭代器的最后一个元素。

Vector

线程安全:Vector 是一个 线程安全 的集合类。
数据结构:Vector 使用的是动态数组结构,而不是哈希表。

ArrayList

非线程安全:ArrayList 是一个 非线程安全 的集合类。
数据结构:ArrayList 使用的是动态数组结构,而不是哈希表。

HashMap

非线程安全:HashMap 是一个 非线程安全 的集合类。它
数据结构:HashMap 使用的是 哈希表 作为底层数据结构,它通过哈希函数来将键映射到桶中,从而实现快速的键值查找。

Hashtable

线程安全:Hashtable 是一个 线程安全 的集合类,
数据结构:Hashtable 使用的也是 哈希表 作为底层数据结构,

LinkedHashMap

是一种有序的HashMap,查询速度快,便于添加删除操作

集合与数组

数组固定大小,集合动态扩展;数组可存基本类型,集合存对象;集合提供丰富操作方法。

List、Set、Collection、Map

List有序可重复,Set无序唯一,Collection是根接口,Map键值对独立体系。
ArrayList vs LinkedList

ArrayList数组实现,随机访问快;LinkedList链表实现,增删快。
HashSet原理

哈希表通过hashCode()计算桶位置,equals()解决冲突,保证元素唯一性。
HashMap vs Hashtable

HashMap线程不安全,允许null键值;Hashtable线程安全,不允许null。

泛型示例

List<String> list = new ArrayList<>();
Set<Integer> set = new HashSet<>();
Map<String, Object> map = new HashMap<>();

泛型优点

类型安全,避免强制转换,代码复用。

哈希码

每个对象有哈希码,默认根据内存地址生成,可能重复(哈希碰撞)。

;