说明:复习数据结构的笔记
1.什么是List集合?它是什么数据结构?
List是一个有序的集合,它可以包含重复元素。在Java中,List通常是通过ArrayList、LinkedList或Vector等类来实现的。它们都实现了List接口,但有不同的性能特点和适用场景。
2.ArrayList和LinkedList有什么区别?在什么情况下你会选择使用哪一个?
ArrayList基于数组实现,支持随机访问,适用于读取操作较多的场景。LinkedList基于链表实现,适用于插入和删除操作较多的场景。
3.List集合是线程安全的吗?如何确保多线程环境下的安全访问?
大多数List实现类(如ArrayList)不是线程安全的。要确保多线程环境下的安全访问,可以使用Collections.synchronizedList()
来创建一个线程安全的List,或者使用并发集合类如CopyOnWriteArrayList
。
4.Collections.synchronizedList()为什么创建出来的List是线程安全的
Collections.synchronizedList()
方法创建的列表(List)可以被认为是线程安全的,是因为它在内部使用了同步机制来确保多线程环境下的访问安全。具体来说,它使用了同步块(synchronized block)来保护对列表的操作,从而避免了多个线程同时修改列表数据而导致的竞态条件(race condition)。
5.为什么要使用List的泛型?如何声明一个泛型List?
泛型提供了类型安全性,可以防止插入错误类型的元素。
声明一个泛型List的方式是使用尖括号,
例如:List<String> stringList = new ArrayList<>();
6.
如何优化List集合的性能?
性能优化的方式包括避免频繁的扩容、使用合适的数据结构、尽量减少遍历次数、选择合适的List实现类等。