This page looks best with JavaScript enabled

Java集合

 ·  ☕ 3 min read

Java集合主要分为继承和实现了CollectionMap两个接口的子接口和类。

1. Collection接口的子接口

  1. List<Integer> list;

    List 所代表的是有序的 Collection,即它用某种特定的插入顺序来维护元素顺序。用户可以对列表中每个元素的插入位置进行精确地控制,同时可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。

  2. Set<Integer> set;

    不包括重复元素的集合,允许null的存在,但是只能有一个

List的子类

  • ArrayList<Integer> arrayList;

继承自AbstractList,非同步,允许null元素插入
初始容量10,最好指定一个初始容量值,避免过多的进行扩容操作而浪费时间、效率

  • LinkedList<Integer> linkedList;

继承自AbstractSequentialList,非同步
LinkedList 是一个双向链表。所以它除了有 ArrayList 的基本操作方法外还额外提供了 get,remove,insert 方法在 LinkedList 的首部或尾部。
由于实现的方式不同,LinkedList 不能随机访问,它所有的操作都是要按照双重链表的需要执行。
在列表中索引的操作将从开头或结尾遍历列表(从靠近指定索引的一端)。这样做的好处就是可以通过较低的代价在 List 中进行插入和删除操作。

  • Vector<Integer> vector;

继承自AbstractList,同步的ArrayList,线程安全

  • Stack<Integer> stack;

继承自Vector,同步,线程安全
实现一个后进先出的堆栈
pop弹出栈顶元素
push压入一个元素入栈
peak获取栈顶元素
empty检测堆栈是否为空
search搜索元素在栈中的位置

Set的子类

  • EnumSet<MyEnum> enums;

继承自AbstractSet,非同步,枚举Set
key不能为null

  • HashSet<Integer> hashSet;

继承自AbstractSet,非同步,查询速度快
内部以哈希码实现,内部顺序也有哈希码决定

  • TreeSet<Integer> treeSet;

继承自AbstractSet,非同步,元素处于排序状态。内部以TreeMap实现
不能插入null

2. Map接口的子类

Map保证了key-value的对应关系,所以不能存在相同的key,但可以存在相同的value

  • HashMap<String, Integer> hashMap;

继承自AbstractMap,查询快速,元素会通过哈希转换函数将元素的哈希地址转换成数组中存放的索引
key和value可以为null

  • TreeMap<String, Integer> treeMap;

继承自AbstractMap,键以某种排序规则排序,内部以 red-black(红-黑)树数据结构实现,实现了 SortedMap 接口
key和value都不能为null

  • Hashtable<String, Integer> hashtable;

同步的,线程安全
继承自Dictionary,也是以哈希表数据结构实现的,解决冲突时与 HashMap 也一样也是采用了散列链表的形式,不过性能比 HashMap 要低
key和value都不能为null

  • EnumMap<MyEnum, String> enumMap;

继承自AbstractMap key必须为枚举类型
key不能为null

enum MyEnum{
	MY_ENUM1,
	MY_ENUM2
}
  • Properties properties;

继承自Hashtable,同步,线程安全
key和value都不能为null


Yang
WRITTEN BY
Yang
Developer