簡體   English   中英

如何在HashMap中添加新的存儲桶值?

[英]How to add a new bucket value in HashMap?

我已經寫了這個小代碼(如下)-

其顯示輸出Singh 我想知道如何用單個鍵s將Patel和Singh的兩個值相加?

import java.util.*;
public class Practice {
    public static void main(String [] args)
    {
        String s="Sameer";
        HashMap<String,String> map=new HashMap();
        map.put(s, "Patel");
        map.put(s, "Singh");
        String value=map.get(s);
        System.out.println(value);
    }
}

就像s-> Patel,Singh。 s指向兩個值。

你不能 地圖的基本思想是擁有唯一的鑰匙

不可以,因為映射中的每個值都有唯一的鍵,所以無法完成。

您對這些概念感到困惑。 我建議先了解HashMap的工作原理。 Link1Link2

我認為您關心的是 在同一個存儲桶中添加新的條目對象 ,但這並不意味着您可以用相同的鍵映射兩個值, 否,完全不!

HashMap中的存儲桶值存儲為Entry類的對象,該類具有作為單鍵和單個值的屬性 (Value can be simple object or Collection Object).


以下是了解HashMap的工作時需要知道的一些要點-

  1. HashMap具有一個稱為Entry的內部類,該類存儲鍵值對。
  2. 上述Entry對象存儲在稱為表的Entry中。
  3. 表的索引在邏輯上稱為存儲桶,它存儲鏈表的第一個元素。
  4. 關鍵對象的hashcode()用於查找該Entry對象的存儲桶。
  5. 如果兩個鍵對象具有相同的哈希碼,則它們將進入表數組的同一存儲桶中。
  6. 關鍵對象的equals()方法用於確保關鍵對象的唯一性。
  7. 完全不使用值對象的equals()和hashcode()方法。

您問題的可能解決方案-

但是,可以通過使用鍵映射Collection對象來實現所需的功能,然后可以遍歷collection對象以讀取所有值。

以下是使用列表的示例-

import java.util.*;
 class Practice {
    public static void main(String [] args)
    {
        String s="Sameer";
        HashMap<String,List<String>> map=new HashMap();
        List<String> lastNameList = new ArrayList<String>();
        lastNameList.add("Patel");
        lastNameList.add("Singh");
        map.put(s, lastNameList);
        List<String> getList=(ArrayList)map.get(s);

        for(String val : getList) {
            System.out.println(val);
        }
    }
}

現在輸出將是-

Patel
Singh

您可以將此想法擴展到任何級別。 由你決定。

希望對您有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM