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<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的区别

  • java.util.Collection 是一个接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
  • java.util.Collections 是一个类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。
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 集合类

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容