14.集合——Map

  • • 发表于 2年前
  • • 作者 大妖怪
  • • 3058 次浏览
  • • 11 条评论
  • • 最后编辑时间 4个月前
  • • 来自 [技 术]

原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处

Map虽然也叫集合,但是它却不是Collection的子接口。它的底层结构是链表散列,也就是一个数组结构然后每个数组结构里包含的一个链表。我们平常直接叫它“键值(key——value)”结构。
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,因此我们可以将这两个拿过来遍历。

分享到:
评论区(共11条评论)
11条评论
Ctrl+Enter
作者

大妖怪

大妖怪

APP:1 帖子:74 回复:182 积分:6722

已加入社区[723]天

梦里巷口,可有你倚门回首

作者详情》
Top