主要是以下两大类
先看下框架图:
我们主要列举一下集中常用的:
一、 Collection< E >(接口)
- 1.1 List< E >(接口)(继承Collection接口,允许重复,以元素的安插顺序来排列)
- 1.1.1 ArrayList< E >
- 1.1.2 LinkedList< E >
- 1.1.3 Vector< E >
- 1.2 Set< E >(接口)(继承Collection接口,不允许重复,有自己内部的一套排列方式)
- 1.2.1 HashSet< E >
- 1.2.2 LinkedHashSet< E >
- 1.1 List< E >(接口)(继承Collection接口,允许重复,以元素的安插顺序来排列)
- 二、Map< K , E >(接口)(是一组成对键-值存放,不允许有重复的键,有自己的排列方式)
- HashMap< K , V >
- LinkedHashMap< K , V >
接下来就详细介绍一下上面列举出来的
ArrayList< E > (基于数组,查询方便,插入麻烦)
-
- 常用到的方法:
- 1.1 add(E e):将指定的元素添加到此列表的尾部
- 1.2 clear() :移除此列表中的所有元素
- 1.3 get(int index) : 返回此列表中指定位置上的元素。
- 1.4 size() : 返回此列表中的元素数。
- 常用到的方法:
例:
import java.util.ArrayList;
public class T_ArrayList {
ArrayList<String> list = new ArrayList<String>();
public void genData() {
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
}
public void printData() {
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
public T_ArrayList() {
genData();
printData();
}
public static void main(String[] args) {
new T_ArrayList();
}
}
LinkedList< E >(基于链表,查询麻烦,插入方便)
-
- 常用到的方法:(基本上和ArrayList一样)
- 1.1 add(E e):将指定的元素添加到此列表的尾部
- 1.2 clear() : 移除此列表中的所有元素
- 1.3 get(int index) :返回此列表中指定位置上的元素。
- 1.4 size() : 返回此列表中的元素数。
- 常用到的方法:(基本上和ArrayList一样)
Vector< E >(基于数组,基于线程安全)
-
- 常用到的方法:(基本上和ArrayList一样,)
- 1.1 add(E e):将指定的元素添加到此列表的尾部
- 1.2 clear() :移除此列表中的所有元素
- 1.3 get(int index) : 返回此列表中指定位置上的元素。
- 1.4 size() : 返回此列表中的元素数。
- 常用到的方法:(基本上和ArrayList一样,)
HashSet< E >(此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。)
-
- 常用到的方法:
- 1.1 add(E e):将指定的元素添加到此列表的尾部
- 1.2 clear()
移除此列表中的所有元素 - 1.3 iterator()
- 1.3.1 Iterator< E >接口常用方法:
- hasNext() : 如果仍有元素可以迭代,则返回 true。
- next() :返回迭代的下一个元素。
- 1.3.1 Iterator< E >接口常用方法:
- 1.4 size()
返回此列表中的元素数。
- 常用到的方法:
例:
package com.cwt.Collection.List.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
public class T_HashSet {
HashSet<String> hashSet = new HashSet<String>();
public T_HashSet() {
genData();
printData();
}
public void genData() {
hashSet.add("aaa");
hashSet.add("aaa");
hashSet.add("bbb");
hashSet.add("ccc");
hashSet.add("ddd");
}
public void printData() {
// 在这儿写两种打印方式for循环和Iterator迭代器
System.out.println("for循环打印:");
for (Object obj : hashSet) {
System.out.println(obj);
}
System.out.println("Iterator迭代器打印:");
// 获得一个迭代器
Iterator<String> ite = hashSet.iterator();
while (ite.hasNext()) {// 确定集合还有元素
System.out.println(ite.next());
}
}
}
运行结果:
总结:
- 通过结果可以看出,HashSet中不允许有重复的元素出现
- 打印方式可以是for(是为了简化迭代器),也可以是迭代器
LinkedHashSet< E >(基于链表)
-
- 常用到的方法:
- 1.1 add(E e):将指定的元素添加到此列表的尾部
- 1.2 clear()
移除此列表中的所有元素 - 1.3 iterator()
- 1.3.1 Iterator< E >接口常用方法:
- hasNext() : 如果仍有元素可以迭代,则返回 true。
- next() :返回迭代的下一个元素。
- 1.3.1 Iterator< E >接口常用方法:
- 1.4 size()
返回此列表中的元素数。
- 常用到的方法:
HashMap< K , V >
-
常用到的方法:
- 1.1 put(K key, V value) :在此映射中关联指定值与指定键。
- 1.2 keySet() :返回此映射中所包含的键的 Set 视图。
- 1.3 get(Object key) : 返回指定键所映射的值;如果对于该键来说,此映射不包含任何映射关系,则返回 null。
- 1.4 size() :返回此映射中的键-值映射关系数。
- 1.5 remove(Object key) :从此映射中移除指定键的映射关系(如果存在)。
例:
package com.cwt.Collection.List.ArrayList;
import java.util.HashMap;
import java.util.Set;
public class T_HashMap {
HashMap<String, Shape> hashMap = new HashMap<String, Shape>();
public T_HashMap() {
genData();
printData();
}
public void genData() {
hashMap.put("1", new ShapeLine(0, 0, 0, 0, null, null));
hashMap.put("1", new ShapeLine(1, 0, 0, 0, null, null));
hashMap.put("2", new ShapeLine(2, 0, 0, 0, null, null));
hashMap.put("3", new ShapeLine(3, 0, 0, 0, null, null));
hashMap.put("4", new ShapeLine(4, 0, 0, 0, null, null));
hashMap.put("5", new ShapeLine(5, 0, 0, 0, null, null));
}
public void printData() {
Set<String> set = hashMap.keySet();
for (Object obj : set) {
System.out.println(hashMap.get(obj));
}
}
}
运行结果:
总结:
通过结果来看,是不允许有键重复的,如果发现有重复,则后面的一个将前面一个覆盖;
LinkedHashMap< K , V >
-
- 常用到的方法:
- 1.1 put(K key, V value) :在此映射中关联指定值与指定键。
- 1.2 keySet() :返回此映射中所包含的键的 Set 视图。
- 1.3 get(Object key) : 返回指定键所映射的值;如果对于该键来说,此映射不包含任何映射关系,则返回 null。
- 1.4 size() :返回此映射中的键-值映射关系数。
- 1.5 remove(Object key) :从此映射中移除指定键的映射关系(如果存在)。
- 常用到的方法: