zoukankan      html  css  js  c++  java
  • Map

    • Collection 中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。
    • Map 中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。
    • Collection 中的集合称为单列集合, Map 中的集合称为双列集合。需要注意的是, Map 中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。

    Map的常用子类

    HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

    LinkedHashMap
    <K,V>:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

    TreeMap
    <K,V>:TreeMap集合和Map相比没有特有的功能,底层的数据结构是红黑树;可以对元素的键进行排序,排序方式有两种:自然排序和比较器排序。

    Map的常用方法

    public V put(K key, V value) : 把指定的键与指定的值添加到Map集合中。
    public V remove(Object key) : 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
    public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
    public Set<K> keySet() : 获取Map集合中所有的键,存储到Set集合中。
    public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有的键值对对象的集合(Set集合)。
    public boolean containKey(Object key) :判断该集合中是否有此键。

    两种遍历方法

    keySet();

        public static void demo1(Map<?, ?> map) {
            Set<?> objects = map.keySet();
            for (Object objectss : objects) {
                System.out.println(map.get(objectss));
            }
        }

     Entry键值对对象:

      

    public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有的键值对对象的集合(Set集合)。
    
    获取了Entry对象 , 表示获取了一对键和值,那么同样Entry中 , 分别提供了获取键和获取值的方法:
    public K getKey() :获取Entry对象中的键。 public V getValue() :获取Entry对象中的值。
        public static void deom2(Map<?, ?> map) {
            Set<? extends Map.Entry<?, ?>> set = map.entrySet();
            for (Map.Entry<?, ?> entry : set) {
                System.out.println(entry.getKey());
                System.out.println(entry.getValue());
            }
        }

    小面试题:检索所有字符出现的次数

        public static void demo3(String str) {
            int openArr = 1;
            HashMap<Character, Integer> map = new HashMap<>();
            char[] chars = str.toCharArray();
            for (int i = 0; i < chars.length; i++) {
                Character character = chars[i];
                if (!map.containsKey(character)) {
                    map.put(character, openArr);
                } else {
                    Integer integer = map.get(character);
                    map.put(character, integer + 1);
                }
            }
            System.out.println(map);
        }
  • 相关阅读:
    VMware下桥接设置
    Silverlight 样式的灵活使用
    Silverlight网页打开后马上崩溃,“白屏”,而且毫无提示
    Silverlight中字典的使用
    WEBGIS网页崩溃问题分析
    MDB数据类型注意事项
    使用浏览器开发着工具查看地图或影响的请求信息
    ArcGIS出图调整
    启动aspx文件错误
    hdu3555(数位DP dfs/递推)
  • 原文地址:https://www.cnblogs.com/xiaozhang666/p/13141014.html
Copyright © 2011-2022 走看看