Map虽然也叫集合,但是它却不是Collection的子接口。它的底层结构是链表散列,也就是一个数组结构然后每个数组结构里包含的一个链表。我们平常直接叫它“键值(key——value)”结构。
map的实现接口有有不少,比如:
map的实现接口有有不少,比如:
- HashMap
- Hashtable
- TreeMap
- LinkedHashMap
我们主要来说说最常用的HashMap:
- 添加元素:put(key,value)
- HashMap map = new HashMap<>();
- map.put("name", "大妖怪");
- map.put("age", "100");
- 查询元素:get(key)
- HashMap map = new HashMap<>();
- map.put("name", "大妖怪");
- map.put("age", "100");
- System.out.println(map.get("name"));
- System.out.println(map.get("age"));
- 删除元素: remove(key)
- 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。
-
遍历
- for each循:
- 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,因此我们可以将这两个拿过来遍历。