Java Map - zhongjiajie/zhongjiajie.github.com GitHub Wiki

Java-Map

每一组映射作为一个<键,值>对保存在Map容器中.Map和List一样是一种接口.Map具有两个泛型参数,第一个是键的类型,第二个是值的类型.类型不能是原生类型,必须是引用类型.因此这里第一个类型是long的包装类Long

  • put: 方法可以增加一个键值对
  • get: 方法就能根据键获取到值
  • remove: 方法可以删除键对应的元素
  • putAll: map1.putAll(map2)将map2中的全部 key-value put到map1中
  • getOrDefault: map.(key, defaultValues)如果可以存在就返回对应的value,如果key不存在就返回设置的默认值,oracle javase map getOrDefault

HashMap

HashMap: 实现了Map接口,底层用Hash算法存储数据,储存的是键值对的结构.声明一般方法是Map<String, String> testMap = new HashMap<String, String>();,常用方法是put get remove keySet values

LinkedHashMap

LinkedHashMap: 实现了Map接口,会按照元素插入的顺序进行排序,大部分情况下都会比TreeMap快.但是有几个点需要注意的:

  • It contains only unique elements.
  • A LinkedHashMap contains values based on the key
  • It may have one null key and multiple null values
  • It is same as HashMap instead maintains insertion order
  • Since it doesn't have to keep the elements sorted, LinkedHashMap should be faster for most cases; TreeMap has O(log n) performance for containsKey, get, put, and remove, according to the Javadocs, while LinkedHashMap is O(1) for each.

TreeMap

TreeMap也能实现按照键值对插入的顺序排序,是通过Comparator以及natural Comparable的内在关系来维持元素的排序的

FAQ

实现静态的Map

如何声明静态的Map类型How can I initialise a static Map:需要使用常量时候很有用

public class Test {
    private static final Map<Integer, String> myMap;
    static {
        Map<Integer, String> aMap = ....;
        aMap.put(1, "one");
        aMap.put(2, "two");
        myMap = Collections.unmodifiableMap(aMap);
    }
}

赋值map全部的键值对到新的map

从旧map中复制值生成一个新的mapmyobjectListB = new HashMap<Integer,myObject>(myobjectListA);


⚠️ **GitHub.com Fallback** ⚠️