Map也是集合框架之一,我们首先来看看Map有哪几种,再说说它的共性方法。
Map的分类:
(1)HashTable:底层是哈希表数据结构,不可以存入null键null值。该集合线程是同步的,jdk1.0效率较低,现被HashMap取代。
(2)HashMap:底层是哈希表数据结构,允许存入null键null值。该集合线程是不同步的,将HashTable替代。jdk1.2出现效率较高。
(3)TreeMap:底层是二叉树数据结构,线程不同步,可以给map集合中的键进行排序。
map的共性方法需要注意的就是map集合元素的取出方式,我们需要掌握它。
总的来说Map集合中元素的取出就两种方式:
(1)将map中所有键存入到Set集合(Set<E> keySet)。因为Set具备迭代器。
所有可以用迭代方式取出所有的键,再通过get()方法获取每一个键对应的值。
其原理就是:将map集合转成Set集合,再通过Set集合迭代取出。
(2)将map中的映射关系(Set<Map.Entry<k,v>> entrySet)存入到Set集合中,再通过Set集合将其迭代出来。迭代出的数据类型是:Map.Entry。
说了两种取出方式估计是看糊涂了,到底是怎么把Map集合弄成Set集合再将元素取出呢?我们可以通过代码来理解。
代码示例:
import java.util.*;
public class MapDemo {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("L01", "qq");
map.put("L02", "ww");
map.put("L03", "ee");
map.put("L04", "rr");
map.put("L05", "tt");
// 先获取map集合的所有键的Set集合,KeySet();
Set<String> KeySet = map.keySet();
// 将map集合中的映射关系取出。存入到Set集合中。
Set<Map.Entry<String, String>> entrySet = map.entrySet();
// 有了Set集合。就可以获取其迭代器。
Iterator<String> it1 = KeySet.iterator();
Iterator<Map.Entry<String, String>> it2 = entrySet.iterator();
//第一种将Map的键值存入Set集合,再将Map中的元素迭代
while (it1.hasNext()) {
String key = it1.next();//获取Map里的键
String value = map.get(key);//获取Map里的值
System.out.println("ket:" + key + ",value:" + value);
}
System.out.println("");
//第二种将Map的映射关系存入Set集合,再将Map中的元素迭代
while (it2.hasNext()) {
Map.Entry<String, String> me = it2.next();
String key = me.getKey();//获取映射关系里的键
String value = me.getValue();//获取映射关系里的值
System.out.println("ket:" + key + ",value:" + value);
}
}
}
以上代码,用了两种方式把同一map集合中的所有元素取出方式。
还有需要注意的是map集合如果第二次存入相同键的元素,则第一次存入的元素会被第二次存入的元素覆盖掉。这也是体现了map的特性,它是以键值对的形式存在的一个键对应一个值。
示例代码:
import java.util.Collection;
import java.util.HashMap;
public class MapDemo {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<String, String>();
// 添加元素
// 添加元素,如果出现相同的键后添加的会覆盖原有的值 并返回原有的值
System.out.println("put:" + map.put("L01", "hhh"));
System.out.println("put:" + map.put("L01", "覆盖了hhh"));
map.put("L02", "ggg");
map.put("L03", "jjj");
// 获取map中所有值
Collection<String> coll = map.values();
System.out.println(coll);
System.out.println(map);
}
}
输出结果:
以上就是我们对map集合必须掌握的东西。