List
java.util.List
可重复集,并且有序
特点是可以根据下标操作元素
常用实现类:
ArrayList:使用数组实现,查询快
LinkedList:使用链表实现,增删更快(首位增删效果明显)
E set(int index,E e)
将给定元素设置到指定位置上,返回值为原位置的元素,所以是替换元素操作。
E get(index)
获取给定下标对应的元素
List集合提供了一对重载的add,remove方法
void add(int index,E e)
将给定元素插入到指定位置。
E remove(int index)
从集合中删除指定位置的元素,并将其返回。
取子集
List subList(int start,int end)
获取当前集合中指定范围内的子集,含头不含尾。
Map
java.util.Map
Map看起来像是一个多行两列的表格。
以key-value对的形式存放元素。
在Map中key不允许重复(重复是依靠key的equals判断)
常用的实现类为:HashMap
V put(K,k,V,v)
将给定的key-value对存入Map
由于Map要求key不允许重复,所以使用Map已有的key存入一个新的value时的操作是替换value,若是一个新的key,则返回值为null。
V get(K k)
根据给定的key获取对应的value,若当前Map中没有给定的key,则返回值为null。
V remove(K k)
删除给定的key所对应的key-value对,返回值为被删除的key-value对中的value。
遍历Map
遍历Map有三种方式:
遍历所有的key
遍历所有的key-value对
遍历所有的value(相对不常用)
遍历所有的key
Set<K> keySet()
该方法会将当前Map中所有的key存入一个Set集合后返回,那么遍历该集合就等于遍历了所有的key。
eg:
Set<String> keySet = map.keySet();
for(String key:keySet) {
System.out.println("key:"+key);
}
遍历每一组键值对
Map中每一组键值对都是由Map的内部类:java.util.Map.Entry的一个实例表示的。
Entry有两个方法:getKey,getValue,可以分别获取这一组键值对中的key与value。
Set<Entry> entrySet
该方法会将Map中每一组键值对(Entry实例)存入一个Set集合后返回。
eg:
Set<Entry<String,Integer>> entrySet = map.entrySet();
for(Entry<String,Integer> e:entrySet) {
String key = e.getKey();
Integer value = e.getValue();
System.out.println(key+":"+value);
}
遍历所有的value
Collection values()
该方法会将当前Map中所有的value存入一个集合后返回。
eg:
Collection<Integer> values = map.values();
for(Integer value:values) {
System.out.println("value:");
}
Set
Set并没有在Collection接口之上增加额外的操作,Set集合中的元素是不能重复的。其中最为重要的是HashSet、LinkedHashSet等的实现。
Java集合框架图
图片来自菜鸟教程