Collection每次只会保存一个对象,而Map主要是负责保存一对对象的信息。也就是我们常说的键值对key-value。
Map接口主要操作方法
如果现在要保存一对关联数据(key=value)的时候,那么如果直接使用Collection不能直接满足要求,所以可以使用Map接口实现此类数据的保存,并且Map接口提供了根据key查找value的方法。
Map的几个主要操作方法:
- 向集合中保存数据
public V put(K key,V value)
- 根据key查找对应的value值
public V get(Object key)
- 将Map集合转化为Set集合
public Set<Map.Entry<K,V>> entrySet>
- 取出全部的key
public Set<K> keySet()//返回值是一个Set类型的集合,key是不能重复的
Map接口的常用子类
在Map接口下有2个常用的子类:
HashMap子类
- 使用HashMap定义的Map集合是无序存放的,顺序无用
- 如果发现出现了重复的key会进行覆盖,使用新的内容替换掉旧的内容
public class HashMapTest {
public static void main(String[] args) throws Exception{
Map<String, Integer> map = new HashMap<String,Integer>();
map.put("壹", 1);
map.put("贰", 2);
map.put("叁", 3);
map.put("叁", 33);//key数据重复
System.out.println(map);
}
}
- 在Map接口里面提供的get()方法是根据key查找所需要的内容的。
public class KeyValueTest {
public static void main(String[] args) throws Exception{
Map<String , Integer> map = new HashMap<String,Integer>();
map.put("壹", 1);
map.put("贰", 2);
map.put("叁", 3);
map.put(null, 9);//key的内容为null
System.out.println(map.get("壹"));
System.out.println(map.get("陆"));//如果key值不存在,返回null
System.out.println(map.get(null));//返回的结果是9
}
}
通过以上我们可以发现,Map存放数据的最终目的实际就是为了信息的查找,但是Collection存放数据的目的是为了输出
- 取得全部的key
public class TestMapGetKey {
public static void main(String[] args) throws Exception{
Map<String , Integer> map = new HashMap<String,Integer>();
map.put("壹", 1);
map.put("贰", 2);
map.put("叁", 3);
map.put(null, 9);//key的内容为null
Set<String> set = map.keySet();//取得全部的key
//输出取得的key的Set类型的集合
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String string = (String) iterator.next();
System.out.println(string);
}
}
}
HashTable子类
HashTable没有什么另外的方法,唯一需要注意的是:
HashTable里面的key和value都不可以为允许设置为null