2021-04-18 11:19  阅读(64)
文章分类:Java 基础教程 文章标签:JavaJava 教程
©  原文作者:w3cschool 原文地址:https://www.w3cschool.cn/java/java-collections-traversing.html

Java集合教程 - Java映射

映射表示包含的集合键值映射。

Map是一个集合,其中每个元素表示一个键值对作为<key,value> ;.<key,value> 对也称为映射中的条目。键和值必须是引用类型。

映射由Map<K,V>接口的实例表示,它不是继承自Collection接口。

映射不允许任何重复的键。每个键映射到正好一个值。值不必是唯一的。 两个键可以映射到相同的值。

Map允许最多一个空值键和多个空值作为其值。

Map接口中的方法可以根据其执行的操作分为以下四类:

  • 基本操作
  • 批量操作
  • 查看操作
  • 比较操作

基本操作

基本方法在Map上执行基本操作,

  • 将一个条目放入映射
  • 获取指定键的值
  • 获取条目的数量
  • 删除条目
  • 检查Map是否为空。

本类别中的方法示例如下:

    int size()
    boolean isEmpty()
    boolean containsKey (Object key)
    boolean containsValue (Object value)
    V  get(Object  key)
    V  getOrDefault(Object key, V  defaultValue)
    V  put(K  key, V  value)
    V  putIfAbsent(K key, V  value)
    V  remove  (Object key)
    boolean remove(Object key, Object value)
    boolean replace(K key, V  oldValue, V  newValue)

批量操作

映射批量操作在映射上执行批量操作,例如将条目复制到另一个Map或从映射中删除所有条目。

本类别中的方法示例如下:

    void  clear()
    void  putAll (Map<? extends K,  ?  extends V>  t)
    void  replaceAll(BiFunction<? super K,?  super V,?  extends V>  function)
    

查看操作

视图操作包含三种方法。我们可以从映射中查看以下集合。

  • 所有键在一个Map中作为一个Set,
  • 所有的值作为Collection,
  • 所有<key,value>对作为Set。

本类别中的方法示例如下:

    Set<K> keySet()
    Collection<V> values()
    Set<Map.  Entry<K,  V>>entrySet()
    

所有键和所有< key,value> 对在映射中始终是唯一的并作为设置视图返回。

由于映射可能包含重复值,它返回一个Collection视图的值。

比较操作

比较操作方法处理比较两个图的相等性。本类别中的方法示例如下:

    boolean equals (Object o)
    int hashCode()
    

实施

HashMapLinkedHashMap,和WeakHashMap是三个实现类用于Map界面。

HashMap允许一个null值作为键和多个空值作为值。

以下代码演示了如何创建和使用Map接口从它的实现类HashMap。HashMap不保证Map中条目的任何特定的迭代顺序。

下面的代码从HashMap创建一个Map

    // Create a  map using HashMap
    Map<String, String>  map = new HashMap<>();
    map.put("CSS", "style");
    

LinkedHashMap是Map接口的另一个实现类。 它使用双向链表在Map中存储条目,并保持迭代排序作为插入顺序。

以下代码演示了如何使用Map。

    import java.util.HashMap;
    import java.util.Map;
    
    public class Main {
      public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("CSS", "style");
        map.put("HTML", "mark up");
        map.put("Oracle", "database");
        map.put("XML", "data");
    
        printDetails(map);
        map.clear();
        printDetails(map);
      }
    
      public static void printDetails(Map<String, String> map) {
        String usage = map.get("CSS");
        System.out.println("Map: " + map);
        System.out.println("Map Size:  " + map.size());
        System.out.println("Map is empty:  " + map.isEmpty());
        System.out.println("Map contains CSS key:   " + map.containsKey("CSS"));
        System.out.println("Usage:  " + usage);
        System.out.println("removed:  " + map.remove("CSS"));
      }
    }
    

上面的代码生成以下结果。

202104181111119_1.png

WeakHashMap类是Map接口的另一种实现。

WeakHashMap类包含弱键。当除了在映射中没有对键的引用时,键是垃圾回收的候选。

如果一个键被垃圾回收,它的相关条目从WeakHashMap中删除。

WeakHashMap允许一个空键和多个空值。

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Java 映射
上一篇
Java 特殊队列
下一篇
Java 映射操作