最近整天面试厂商的人,我总在问一个很简单的问题,就是集合分为哪几种,都什么区别,怎么用。答的水平参差不齐。所以我想整体的写一写,系统的来学习一下常用的、集合相关的知识点。
java集合有哪些
首先需要明确的是:集合有3个接口
- Iterator
- Collection
- Map
这是并列的概念。
可以看一下类图:
http://www.runoob.com/java/java-collections.html
要明确如下这些概念的层次关系
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);
}
...
...
}
网友评论