Java集合框架:总结

最近博主对于Java集合框架这个系列做了一个整理,主要包括:

  1. Map系:HashMap, LinkedHashMap, TreeMap, WeakHashMap, EnumMap;
  2. List系:ArrayList, LinkedList, Vector, Stack;
  3. Set系:HashSet, LinkedHashSet, TreeSet;
  4. 工具类:Collections,Arrays

Java集合框架:Collections工具类

java.util.Collections工具类提供很多有用的方法,使得程序猿操作集合类的时候更加的方便容易,这些方法都是静态的。整个Collections工具类源码差不多有4000行,我们针对一些典型的方法进行阐述。


Java集合框架:Arrays工具类

java.util.Arrays类能方便地操作数组,它提供的方法都是静态的。整个Arrays工具类的实现有3000+行,但是归纳总结一下可知它有以下功能(9个):


Java集合框架:Set(HashSet,LinkedHashSet,TreeSet)

Set概述

Set几乎都是内部用一个Map来实现, 因为Map里的KeySet就是一个Set,而value是假值,全部使用同一个Object。Set的特征也继承了那些内部Map实现的特征。


Java集合框架:LinkedList

LinkedList定义

package java.util;
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable{
transient int size = 0;
transient Node<E> first;
transient Node<E> last;
}

Java集合框架:ArrayList

ArrayList定义

package java.util;
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable{
private static final int DEFAULT_CAPACITY = 10;
private static final Object[] EMPTY_ELEMENTDATA = {};
private transient Object[] elementData;
private int size;
//其余省略
}

Java集合框架:EnumMap

EnumMap定义

package java.util;

import java.util.Map.Entry;
import sun.misc.SharedSecrets;
public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V>
implements java.io.Serializable, Cloneable{
private final Class<K> keyType;
private transient K[] keyUniverse;
private transient Object[] vals;
private transient int size = 0;
}

keyType变量是EnumMap的key泛型的类对象,EnumMap根据这个类型,可以获得keyUniverse的内容,vals存放的是与keyUniverse映射的值,如果没有映射则为null,如果映射为null则会特殊处理成NULL,NULL的定义如下:


Java集合框架:WeakHashMap

WeakHashMap定义

package java.util;
import java.lang.ref.WeakReference;
import java.lang.ref.ReferenceQueue;

public class WeakHashMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V> {
}

WeakHashMap实现了Map接口,是HashMap的一种实现,它比HashMap多了一个引用队列:


Java集合框架:TreeMap

TreeMap定义

package java.util;
public class TreeMap<K,V>
extends AbstractMap<K,V>
implements NavigableMap<K,V>, Cloneable, java.io.Serializable{
}
public interface NavigableMap<K,V> extends SortedMap<K,V>{}

TreeMap继承AbstractMap,实现NavigableMap、Cloneable、Serializable三个接口。其中AbstractMap表明TreeMap为一个Map即支持key-value的集合, NavigableMap则意味着它支持一系列的导航方法,具备针对给定搜索目标返回最接近匹配项的导航方法 。


Java集合框架:LinkedHashMap

如无特殊说明,本文以jdk7为准进行说明。

package java.util;
import java.io.*;
public class LinkedHashMap<K,V>
extends HashMap<K,V>
implements Map<K,V>{
}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×