今天又是学渣的日常学习笔记
Java集合——List、Set、Map
概述
首先List和Set都是继承于Collection的接口,而Map不是。
List
List 接口存储一组不唯一,有序(插入顺序)的对象。
-
List接口的实现类
1、ArrayList
实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高
2、LinkedList采用链表存储方式(离散空间)。插入、删除元素时效率比较高 - List接口常用方法小结
- void addFirst(Object o) 在列表的首部添加元素
- void addLast(Object o) 在列表的末尾添加元素
- Object getFirst() 返回列表中的第一个元素
- Object getLast() 返回列表中的最后一个元素
- Object removeFirst() 删除并返回列表中的第一个元素
- Object removeLast() 删除并返回列表中的最后一个元素
- Linkedlist的特殊方法
- void addFirst(Object o) 在列表的首部添加元素
- void addLast(Object o) 在列表的末尾添加元素
- Object getFirst() 返回列表中的第一个元素
- Object getLast() 返回列表中的最后一个元素
- Object removeFirst() 删除并返回列表中的第一个元素
- Object removeLast() 删除并返回列表中的最后一个元素
Set
Set 接口存储一组唯一,无序的对象。 (Set无法随机访问,要访问其元素,只能使用迭代器遍历)
-
Set接口的实现类
1、HashSet:
保证在Set中的元素唯一,但是不保证元素的顺序恒久不变(加入新元素后,元素的遍历顺序可能发生改变)。
2、TreeSet:
保证Set中的元素唯一,并且对元素按其自然顺序进行排序。 -
Set常用方法
- boolean add(E e);
- void clear();
- boolean contains(Object o);
- boolean isEmpty();
- boolean remove(Object o);
- int size()
Map
Map接口存储一组键值对象,提供key(唯一)到value的映射。
- Map接口常用方法
- Object put(Object key, Object val) 以“键-值对”的方式进行存储
- Object get (Object key) 根据键返回相关联的值,如果不存在指定的键,返回null
- Object remove (Object key) 删除由指定的键映射的“键-值对”
- int size() 返回元素个数
- Set keySet () 返回键的集合
- Collection values () 返回值的集合
- boolean containsKey (Object key) 如果存在由指定的键映射的“键-值对”,返回true
- 遍历Map
import java.util.*;
public class Test{
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("1", "value1");
map.put("2", "value2");
map.put("3", "value3");
//第一种:普遍使用,二次取值
System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
}
//第二种
System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第三种:推荐,尤其是容量大时
System.out.println("通过Map.entrySet遍历key和value");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第四种
System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
for (String v : map.values()) {
System.out.println("value= " + v);
}
}
}