java面试-集合相关

2020-03-23  本文已影响0人  沙夏cc

最近整天面试厂商的人,我总在问一个很简单的问题,就是集合分为哪几种,都什么区别,怎么用。答的水平参差不齐。所以我想整体的写一写,系统的来学习一下常用的、集合相关的知识点。

java集合有哪些

首先需要明确的是:集合有3个接口

这是并列的概念。

可以看一下类图:
http://www.runoob.com/java/java-collections.html

image.png

要明确如下这些概念的层次关系

Collection

Map

前四个都是继承AbstractMap,实现了Map接口,代码里都是

xxx extends AbstractMap<K,V> implements Map<K,V>

但是HashTable继承Dictionary,实现了Map接口,所以这是一个很重要的区别。

List是一个接口

List.java

public interface List<E> extends Collection<E> {
    int size();
    boolean isEmpty();
    boolean contains(Object o);
    Iterator<E> iterator();
    ...
    ...
}

ArrayList是一个类

ArrayList.java

public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
    
}

HashMap和HashTable的区别

HashTable为什么是线程安全的

public synchronized int size() {
        return count;
    }

Java中Collection和Collections的区别

public interface Collection<E> extends Iterable<E> {
    int size();
    boolean isEmpty();
    ...
    ...
}

public class Collections {
    // Suppresses default constructor, ensuring non-instantiability.
    private Collections() {
    }
    ...
    
    public static <T extends Comparable<? super T>> void sort(List<T> list) {
        list.sort(null);
    }
    ...
    ...
}

还有非常多内容,后续有时间继续整理...

参考资料

1.集合类--最详细的面试宝典--看这篇就够用了(java 1.8)

2.BAT面试必备——Java 集合类

上一篇下一篇

猜你喜欢

热点阅读