java面试-集合相关

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

java集合有哪些

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

  • Iterator
  • Collection
  • Map

这是并列的概念。

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

image.png

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

Collection

  • List
    • ArrayList
    • LinkedList
    • Vector
      • Stack
  • Set
    • HashSet
    • TreeSet
  • Queue

Map

  • HashMap
    • LinkedHashMap
  • TreeMap
  • WeakHashMap
  • IdentityHashMap
  • HashTable

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

xxx extends AbstractMap implements Map

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

List是一个接口

List.java

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

ArrayList是一个类

ArrayList.java

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

HashMap和HashTable的区别

HashTable为什么是线程安全的

public synchronized int size() {
        return count;
    }

Java中Collection和Collections的区别

  • java.util.Collection 是一个接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
  • java.util.Collections 是一个类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。
public interface Collection extends Iterable {
    int size();
    boolean isEmpty();
    ...
    ...
}

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

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

参考资料

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

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

你可能感兴趣的:(java面试-集合相关)