美文网首页Java
No.5 Map集合

No.5 Map集合

作者: 醒着的码者 | 来源:发表于2016-04-10 22:22 被阅读54次

简介:

  • Map集合:将键映射到值的对象。
    (1)一个映射不能包含重复的键;
    (2)每个键最多只能映射到一个值。
  • Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的。
  • Map集合的数据结构只针对键有效,跟值无关 ,根据键的数据结构分类Map集合常用类为:HashMap,TreeMap

常用方法:

  • 增加元素:V put(K key,V value):添加元素。
    (1)如果键是第一次存储,就直接存储元素,返回null
    (2)如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
  • 删除功能
    (1)void clear():删除所有的键值对元素
    (2)V remove(Object key):根据键删除键值对元素,并把值返回;
  • 查询:
    (1)根据键来查询:boolean containsKey(Object key):判断集合是否包含指定的键
    (2)根据值来查询;boolean containsValue(Object value):判断集合是否包含指定的值
    (3)boolean isEmpty():判断集合是否为空
  • 获取方法:
    (1)V get(Object key):根据键获取值
    (2)Set<K> keySet():获取集合中所有键的集合
    (3)Collection<V> values():获取集合中所有值的集合
    (4)Set<Map.Entry<K,V>> entrySet():遍历获取

关于Entry的理解;

相信大家在刚接触java的时候肯定对Map集合中Set<Map.Entry<K,V>> entrySet()方法很难理解,这里我说下我的理解,欢迎大家指正:
(1)首先我们理解什么是内部类,内部类简单来说就是定义在一个类中的类,内部类的特点是就是能够访问外部类的任何属性和方法;内部类的调用方法是"外部类.内部类";
(2)这里正是应用了这个方法:在Map接口内部定义了一个子接口,该字接口也可以理解为是Map类型的,这个子接口内部提供了获取Map集合中的key和value的方法;
(3)通过调用entrySet方法获取一个Set集合,该集合中存放的元素为Map.Entry类型的元素。
(4)API对这个内部接口定义大概意思是,他存储了与对应的Map集合相同的元素映射。也就是说同过entrySet方法得到的是将Map集合元素以Map.Entry类型存放在了一个set集合中。
(5)遍历Map.Entry我们只能通过高级for循环来遍历了。

Map集合的两种遍历方法;

public class MapDemo {

public static void main(String[] args) {
    Map<Integer, String> map = new HashMap<>();
    map.put(1, "a");
    map.put(2, "b");
    map.put(3, "c");
    //遍历方式1:keySet
    Set<Integer> key_Set = map.keySet();
    for(Iterator<Integer> it = key_Set.iterator();it.hasNext();){
        int key = it.next();
        System.out.println("key :" + key +"; "+  "value : " + map.get(key));
    }
    //遍历方式2:entrySet
    Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
    for(Map.Entry<Integer, String> temp : entrySet){
        System.out.println("key :" + temp.getKey() +"; "+  "value : " + temp.getValue());
    }
}
}

注意Map集合没有迭代器方法,所以有了两个方法keySet()/entrySet();各返回一个Set集合,在通过遍历Set集合的方法来遍历Map中的内容;

方法1中:先通过将Map中的key存放在Set中,在遍历Set中的key的同时在调用Map的get方法获取值,这个方法略显得有点效率低下;
方法2中:先通过将Map中的Entry放在Set中,在通过遍历Set中的Map.Entry对象来获取Map中的键和值。这个方法是被推荐是使用的;但是这里有个误区千万不能在第二方法的时候同过迭代器来迭代Set集合!原因是获取it.next()值要不获取值要不获取键。如果一个循环内调用两次next获取键和值,那么就会产生错误;

相关文章

  • No.5 Map集合

    简介: Map集合:将键映射到值的对象。(1)一个映射不能包含重复的键;(2)每个键最多只能映射到一个值。 Map...

  • 2019-01-03

    Map集合 Map集合 1.1Map集合概念 Map集合是一种存放关系对象的对象的双列集合。 1.2Map集合的常...

  • 2019-01-13

    基于Map集合重点整理 Map集合 1.1Map集合概念 Map集合是一种存放关系对象的对象的双列集合。 1.2M...

  • Map集合Map<Integer,String> m

    01Map集合概述 A:Map集合概述:我们通过查看Map接口描述,发现Map接口下的集合与Collection接...

  • Map接口

    01Map集合概述 A:Map集合概述:我们通过查看Map接口描述,发现Map接口下的集合与Collection接...

  • 2020-06-30【Map】

    Map概述 Map集合的基本功能 Map集合的获取功能 Map集合的遍历 练习 Collections类 斗地主

  • day04 【Map】

    day04 【Map】 主要内容 Map集合 教学目标 能够说出Map集合特点 使用Map集合添加方法保存数据 使...

  • Java - Part 6

    一、Map集合Map集合和Collection集合不一样,Map集合是双列集合,以键值对的形式存在,键不能重复,值...

  • 集合详解

    Iterator:迭代器,它是Java集合的顶层接口(不包括 map 系列的集合,Map接口 是 map 系列集合...

  • 第六篇学习笔记

    第六篇学习总结 一、Map集合 Map集合和Collection集合不一样,Map集合是双列集合,以键值对的形式存...

网友评论

    本文标题:No.5 Map集合

    本文链接:https://www.haomeiwen.com/subject/vtkblttx.html