List Map Set 集合
一、基础概念
1. Collection 和 Map 接口
Java集合框架主要由 Collection和Map两个根接口及其子接口、实现类组成。
1) Collection 接口是Set、List、和Queue接口的父接口:
Collection: Set 、List 、Queue 1. Set集合包括: HashSet ( LinkedHashSet)、SortedSet (TreeSet)、EnumSet 2. List集合包括: ArrayList 、 LinkedList 、 Vector 3. Queue集合: (并发编程中涉及,一般用于缓冲,并发访问) 其中 ArrayList 、LinkedList 、HashSet 、 TreeSet 为常用实现类。
2) Map 接口实现类保存具有映射关系的数据。每项数据由键值对(key ,value)组成,其中key不可重复:
Map 主要实现类:HashMap (LinkedHashMap)、SortedMap(TreeMap) 、HashTable(Properties)、 EnumMap等
其中 HashMap 、TreeMap 为常用实现类。
二、List 集合
List集合储存对象为 重复且有序 。
1. ArrayList :数组集合类型;可动态增加容量
特点:元素增删慢,查询快
2. LinkedList :链表集合类型;双向循环列表,可用作为堆栈
特点:方便增删
3.常用方法:
具体方法查看 ArrayList API 和 LinkedList API
add(Object e):添加元素,按照插入的顺序排列
add(int index, Object e):向指定索引处添加元素,原有元素依次后移
remove(Object e):删除指定元素,返回值为被删除的元素
remove(int index):删除指定索引处元素,返回值为被删除的元素
set(int index, Object e):将索引处的元素替换成指定元素,返回值为替换前的元素
get(int index):获取指定索引处的元素,并返回该元素
三、Set集合
Set集合储存对象为 唯一且无序 。(插入顺序与遍历循序不一致)
1. HashSet :元素不重复且无序集合,有且仅有一个元素为null
2. TreeSet:元素不重复但有序(树结构)集合 ,元素不能为null;
3. 常用方法:
具体方法查看 HashSet API 和 TreeSet API
boolean |
add(E e) 将指定的元素添加到此组如果尚未存在。 |
---|---|
void |
clear() 删除所有从这个集合的元素。 |
Object |
clone() 返回一个浅拷贝的HashSet实例:元素本身不是克隆。 |
boolean |
contains(Object o) 如果这个集合包含指定的元素返回true。 |
boolean |
isEmpty() 如果这组不包含任何元素返回true。 |
Iterator<E> |
iterator() 返回一个迭代器在这个集合的元素。 |
boolean |
remove(Object o) 从这组删除指定的元素是否存在。 |
int |
size() 返回元素的数量在这集(基数)。 |
四、 Map集合
Map集合接口 表示一个键值对(key,value)的映射。其中:
1.KeySet:为一个Map中 键(key)的集合,以Set的形式保存,所以不能重复。通过Map.KeySer()方法获取。遍历方法:
Set set = map.KeySet();
for(Object key : set){
System.out.println(map.get(key));
}
2.Values: 为一个Map中 值(value)的集合,以Collection的形式保存,所以可重复。通过Map.Values()方法获取。遍历方法:
Collection values = map.Values();
Iterator it = values.iterator();
while(it.hasNext()){
System.out.printLn(it.next());
}
3.Entry:为Map接口中的静态内部接口,表示某个键值对的映射。通过Map.entrySet()方法获取一组Entry集合,并保存在Set中;
遍历方法:
Set entrySet = map.entrySet();
for (Object entrys : entrySet) {
Map.Entry entry = (Map.Entry) entrys; //获取到一组Entry
System.out.println(entry); //key=value
System.out.println(entry.getKey() + " / " + entry.getValue());
}
-
HashMap: 速度快,无序 ; 线程不安全,key-value 允许为空
-
TreeMap: 有序 ,效率比hashMap低
-
LinkedHashMap: (HashMap子类)结合HashMap和TreeMap的优点:有序效率高
应用场景:
快速查询考虑 HashMap ;
需特定排序考虑 TreeMap ;
仅需要插入顺序考虑LinkedhashMap ;