簡體   English   中英

將兩個值與Java HashMap中的單個鍵相關聯

[英]Associating two values to a single key in a java HashMap

我試圖將不同數據類型的兩個值(一個長,另一個為字符串)關聯到Java HashMap中的單個鍵。 我環顧四周,針對類似問題的建議包括使用Apache Collections Framework中的MultiValuedMap或Guava中的MultiMap。 但是,我認為這些可能會過大,而且我不想在系統中添加額外的二進制文件。

定義一個類有什么問題,例如:

class X {
    long value1;
    String value2;
    X(long v, String w) { this.value1 = v; this.value2 = w;}
}

在插入HashMap時,請執行以下操作:

X obj = new X(1000, "abc");
map.add("key", obj)

這種方法是否有明顯的缺點? 我正在尋找一種可以在查找中很好擴展的解決方案。

謝謝!

您的方法沒有錯。 由於Java缺少元組類,因此可以通用地定義自己的類(而不是類X ):

public class Tuple<X, Y> { 
  public final X x; 
  public final Y y; 
  public Tuple(X x, Y y) { 
    this.x = x; 
    this.y = y; 
  } 
} 

另請參閱在Java中使用成對或2元組

用法如下:

    Map<String,Tuple<Long,String>> map = new HashMap<>();
    Tuple<Long,String> obj = new Tuple<>(1000L, "abc");
    map.put("key", obj);

很好 您可以將任何對象存儲為Map的值,在這種情況下,您只需使用自己的類即可包裝兩個單獨的值。

只要您不使用自定義類作為鍵,就已經完成了。

暫無
暫無

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

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