前言
题目汇总来源 史上最全各类面试题汇总,没有之一,不接受反驳
- 面试题汇总一 Java 语言基础篇
- 面试题汇总二 Java 多线程篇
- 面试题汇总三 Java 集合篇
- 面试题汇总四 JVM 篇
- 面试题汇总五 Spring 篇
- 面试题汇总六 数据库篇
- 面试题汇总七 计算机网络篇
目录
修改对象A的equals方法的签名,那么使用HashMap存放这个对象实例的时候,会调用哪个equals方法?
HashMap如何put数据(从HashMap源码角度讲解)?
Array和ArrayList有何区别?什么时候更适合用Array
JAVA8的ConcurrentHashMap为什么放弃了分段锁,有什么问题吗,如果你来设计,你如何设计。
集合
Collection 和Collections 的区别?
Java中Collection和Collections的区别
Collection
java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
public interface Collection<E> extends Iterable<E> {
int size();
boolean isEmpty();
boolean contains(Object o);
Iterator<E> iterator();
Object[] toArray();
<T> T[] toArray(T[] a);
boolean add(E e);
boolean remove(Object o);
boolean containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c);
boolean removeAll(Collection<?> c);
default boolean removeIf(Predicate<? super E> filter) {...}
boolean retainAll(Collection<?> c);
void clear();
boolean equals(Object o);
int hashCode();
default Spliterator<E> spliterator() {...}
default Stream<E> stream() {...}
default Stream<E> parallelStream() {...}
}
Collections
Collections 则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。
修改对象A的equals方法的签名,那么使用HashMap存放这个对象实例的时候,会调用哪个equals方法?
该对象超类Object 类的equals方法
List,Set,Map的区别
List:单列集合,元素有序,可重复
Set:单列集合,元素无序,不可重复
Map:双列集合,元素无序,key 不可重复,value 可重复
List和Map的实现方式以及存储方式
我把所有的集合都整理到这里了
List
- ArrayList:内部结构为数组,线程不安全,支持随机访问。
- LinkedList:内部结构为链表,线程不安全。不支持随机访问,在头尾增删节点快,但查找需要遍历比较慢。实现了 Deque 和 Queue 接口。
- CopyOnWriteArrayList:内部结构为数组,线程安全。发生修改时,会先创建副本并在此之上修改,再将引用指向副本。修改操作需要 ReentrantLock 同步。
- Vector:内部结构为数组,线程安全,修改方法使用 synchronized 同步。
- Stack:继承 Vector,线程安全。因为用到 synchronized,有性能问题,推荐用 ArrayDeque 代替。
Map
- HashMap:内部结构为数组+链表,1.8之后链表过长(默认8节点)会转化为红黑树。线程不安全。无序。key 和 value 可以为 null。
- TreeMap:内部结构为红黑树。线程安全。按制定方式排序。默认比较器下 key 不为 null。
- LinkedHashMap:线程不安全。结构 HashMap 类似,不过内部维护有节点插入顺序的链表,所以遍历时元素按插入顺序排序。
- ConcurrentHashMap:HashMap 的线程安