一.整体概述
java集合体系分为两大部分:Collection
和Map
。
-Collection接口下常见的子接口有List
、Set
接口。
-List接口下有ArrayList、LinkedList、Vector等实现类;
-Set接口下有HashSet、LinkedHashSet、TreeSet等实现类;
-而Map接口
下有HashMap、TreeMap、Hashtable等实现类。
具体可参见JavaSE帮助文档
二.Collection接口
1.List
特点:元素有序且可重复
-ArrayList
:底层结构是数组,查询快,增删慢。同时线程不安全,但效率高。
-LinkedList
:底层结构是链表,查询慢,增删快。线程不安全,效率高。
-Vector
:底层结构也是数组,查询快,增删慢。但线程安全,效率低。
2.Set
-HashSet
:底层结构是哈希表,元素无序且唯一.
-LinkedHashSet
:底层结构是链表和哈希表,元素有序且唯一。
-TreeSet
:底层结构为红黑树,元素有序且唯一。
三.Map接口
特点:以键值对
的形式对元素进行存储,键不能重复,但值可以。同时元素无序
。
Map集合的遍历:
1.通过map.values()
方法遍历得到所有的值。
2.将Map集合中的键通过map.keySet()
方法存入Set集合当中,再遍历该Set集合以get()
方法获取值。
3.通过entrySet()
方法获取包含Map映射关系的Set集合,接着对其迭代
调用getKey()
、getValue()
方法获取对应的键和值。
测试代码:
package package04_collection;
import java.util.HashMap;
import java.util.Map;
public class mapTest {
public static void main(String[] args) {
Map<String,String>map = new HashMap<String, String>();
map.put("per01","赵");
map.put("per02","钱");
map.put("per03","孙");
map.put("per04","李");
//1.values方法遍历
for (String value : map.values()) {
System.out.println("value:"+value);
}
//2.keySet方法遍历
for (String s : map.keySet()) {
System.out.println("key:"+s+"\tvalue:"+map.get(s));
}
//3.entrySet方法遍历
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key:"+entry.getKey()+"\tvalue:"+entry.getValue());
}
}
}
效果截图:
注意
:TreeMap实现类是有序的,不允许键为null;Hashtable是线程安全的,同时效率较低,不允许null值;而HashMap线程不安全,键和值都允许null值。