[英]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.