Map虽然也叫集合,但是它却不是Collection的子接口。它的底层结构是链表散列,也就是一个数组结构然后每个数组结构里包含的一个链表。我们平常直接叫它“键值(key——value)”结构。
map的实现接口有有不少,比如:
-
HashMap
-
Hashtable
-
TreeMap
-
LinkedHashMap
我们主要来说说最常用的HashMap:
-
HashMap map = new HashMap<>();
-
map.put("name", "大妖怪");
-
map.put("age", "100");
复制代码
-
HashMap map = new HashMap<>();
-
map.put("name", "大妖怪");
-
map.put("age", "100");
-
System.out.println(map.get("name"));
-
System.out.println(map.get("age"));
复制代码
-
HashMap map = new HashMap<>();
-
map.put("name", "大妖怪");
-
map.put("age", "100");
-
System.out.println(map.get("name"));
-
System.out.println(map.get("age"));
-
map.remove("age");
-
System.out.println(map.get("name"));
-
System.out.println(map.get("age"));
复制代码
-
修改元素: put(已存在的key,新的value)
-
HashMap map = new HashMap<>();
-
map.put("name", "大妖怪");
-
map.put("age", "100");
-
System.out.println(map.get("name"));
-
System.out.println(map.get("age"));
-
map.put("age","101");
-
System.out.println(map.get("name"));
-
System.out.println(map.get("age"));
复制代码
由上述简单的增删改查,我们可以发现,key相当于放入map内容的索引,value就是真正内容。我们查询和删除其实就是对相应的key进行的操作,而put的作用是当操作的是新的key,则新增一条数据,因为HashMap是不可重复的,所以当操作的key已存在,就会覆盖该key下对应的value。
-
遍历
-
HashMap map = new HashMap();
-
map.put("1", "大妖怪");
-
map.put("2", "二妖怪");
-
map.put("3", "三妖怪");
-
map.put("4", "四妖怪");
-
map.put("5", "五妖怪");
-
for (Object obj : map.values()) {
-
System.out.println(obj);
-
}
复制代码
-
HashMap map = new HashMap();
-
map.put("1", "大妖怪");
-
map.put("2", "二妖怪");
-
map.put("3", "三妖怪");
-
map.put("4", "四妖怪");
-
map.put("5", "五妖怪");
-
for (Object obj : map.keySet()) {
-
System.out.println(map.get(obj));
-
}
复制代码
上述例子中,values()方法拿到的是一个value组成的Collection,而ketSet()方法拿到的是一个key组成的Set,因此我们可以将这两个拿过来遍历。 |