java基础——Map集合

Map以键值对的形式存储数据,其中Map.entry,是Map的内部类,它用来描述Map中的键值对。Map是一个接口,HashMap是他的一个实现类

Map中有几个重要的方法:

get(Object key);//获取给key的值

put(Object key,Object value);//该方法会将原先key所对应的键值对覆盖掉,即可以使用该方法来修改Map中的值

containsKey(Object key);//是否包含某个元素。通过配合get和put方法,来实现匹配并修改Map中的元素

 

Collection容器中包含Set和List接口,Set中又包含HashSet,List中包含LinkedList和ArrayList;单独的Map接口中只有HashMap。

       java.util 中的集合类包含 Java 中某些最常用的类。最常用的集合类是 List 和 Map。 List的具体实现包括 ArrayList和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List适用于按数值索引访问元素的情形,其中的数据有顺序且可以重复(有顺序即提供get(i)的索引方法)。而Set中数据无顺序且不可以重复。

 

重点:Map遍历

  迭代Map中的元素不存在直接的方法。如果要迭代Map中的元素,必须首先获得Map 的“视图”。

返回视图的Map方法。通过这些方法可以遍历Map元素,也可以删除Map中的元素。

(1)entrySet() :返回所有键值对

返回 Map中所包含映射的 Set视图。 Set 中的每个元素都是一个 Map.Entry对象,可以使用 getKey()和 getValue()方法(还有一个 setValue()方法)访问后者的键元素和值元素

(2)keySet() :返回所有键

返回 Map中所包含键的 Set 视图。删除 Set中的元素还将删除 Map中相应的映射(键和值)

(3)values() :返回所有值

返回 map中所包含值的 Collection视图。删除 Collection中的元素还将删除 Map中相应的映射(键和值)

 

用一个华为上机题作为例子,就明白了

题目是:手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出。提示(可以用Map)

/**
 * 手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出。提示(可以用Map)
 * 实例:
 * 输入:aaabbbccc
 * 输出:
 * a 3
 * b 3
 * c 3
 * Created by fanyukai on 2018\3\8 0008.
 */
public class MapJava {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入字符串");
        String str = scan.next();
        Map<Character,Integer> map=countChar(str);

        //这里我采用增强for循环来遍历Map集合
        for (Map.Entry<Character,Integer> entry : map.entrySet()){
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
    }

    private static Map<Character,Integer> countChar(String str) {
        int i=0;
        Map<Character,Integer> map = new HashMap<Character,Integer>();
        //这里利用了HashMap集合的特性,put方法放入键值对时,若key值相同,那么原先key对应的值将会被覆盖
        while (i < str.length()){
            if(!map.containsKey(str.charAt(i))){
                map.put(str.charAt(i),1);
            }else{
                map.put(str.charAt(i),map.get(str.charAt(i))+1);
            }
            i++;
        }
        return map;
    }
}

结果截图:

 

 这道问题主要考的是:Map集合的常用方法(put,get,containsKey),Map集合如何遍历(必须要获得视图entrySet,并且定义对象Map.Entry)

posted @ 2018-03-08 17:32  MichaelKai  阅读(221)  评论(0编辑  收藏  举报