Java 映射

2018-02-20 02:55 更新

Java集合教程 - Java映射


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

Map是一個集合,其中每個元素表示一個鍵值對作為<key,value> ;.<key,value> 對也稱為映射中的條目。鍵和值必須是引用類型。

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

映射不允許任何重復(fù)的鍵。每個鍵映射到正好一個值。值不必是唯一的。 兩個鍵可以映射到相同的值。

Map 允許最多一個空值鍵和多個空值作為其值。

Map接口中的方法可以根據(jù)其執(zhí)行的操作分為以下四類:

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

基本操作

基本方法在Map上執(zhí)行基本操作,

  • 將一個條目放入映射
  • 獲取指定鍵的值
  • 獲取條目的數(shù)量
  • 刪除條目
  • 檢查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)

批量操作

映射批量操作在映射上執(zhí)行批量操作,例如將條目復(fù)制到另一個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> 對在映射中始終是唯一的并作為設(shè)置視圖返回。

由于映射可能包含重復(fù)值,它返回一個 Collection 視圖的值。

比較操作

比較操作方法處理比較兩個圖的相等性。本類別中的方法示例如下:

boolean equals (Object o)
int hashCode()

實施

HashMap , LinkedHashMap ,和 WeakHashMap 是三個實現(xiàn)類用于 Map 界面。

HashMap 允許一個 null 值作為鍵和多個空值作為值。

以下代碼演示了如何創(chuàng)建和使用 Map 接口從它的實現(xiàn)類 HashMap 。HashMap不保證Map中條目的任何特定的迭代順序。

下面的代碼從HashMap創(chuàng)建一個Map

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

LinkedHashMap是Map接口的另一個實現(xiàn)類。 它使用雙向鏈表在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"));
  }
}

上面的代碼生成以下結(jié)果。

WeakHashMap 類是 Map 接口的另一種實現(xiàn)。

WeakHashMap 類包含弱鍵。當(dāng)除了在映射中沒有對鍵的引用時,鍵是垃圾回收的候選。

如果一個鍵被垃圾回收,它的相關(guān)條目從 WeakHashMap 中刪除。

WeakHashMap 允許一個空鍵和多個空值。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號