一、集合框架
Collection接口:没有提供直接的实现类,但是却被继承产生了三个重要的接口List、Set、Queue。
Map接口:和Collection接口没有直接的关系,但都属于集合类中的一部分。
Iterator接口:所有的集合类都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含三个方法:hasNext()、next()、remove()。
二、几种常见的接口及类
List及其实现类:存放的对象是有序的,可以重复,查询速度快,但是插入和删除速度较慢,因为要伴随着后面数据的移动。
Set及其实现类:存放的对象是无序的(TreeSet除外),不可以重复。
Map及其实现类:存放的对象是无序的(TreeMap除外),存放的内容为键值对,键不可以重复,值可以重复。根据键获取值,对map集合遍历时先得到键的set集合,对set集合进行遍历,得到相应的值。
三、Map集合的四种遍历方式
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); }
四、常见集合之间的区别
HashTable与HashMap
1、同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的。
2、HashMap允许存在一个为null的key,多个为null的value 。
3、hashtable的key和value都不允许为null。