[英]Any data structure in java that supports multiple keys - not map exactly
我遇到了一个需要这样的情况:
197 => 6 (1 year)
197 => 12 (2 years)
想要根据订阅年份添加多个产品及其价格,价值会有所不同。
我想知道我们在java中是否有任何支持重复键的数据结构(应该像map一样,但必须支持重复键)。
我可以通过创建一个类来做,但只是想知道是否有任何东西支持这个东西..它更像是一个MAP但没有地图,因为它需要支持多个键。
是的,您可以使用像番石榴这样的现有库来实现。 这是guava库链接的 MultiMap
接口的链接 。 这里有一个关于如何使用它的例子(取自这里 ):
Multimap<String, String> myMultimap = ArrayListMultimap.create();
// Adding some key/value
myMultimap.put("Fruits", "Banana");
myMultimap.put("Fruits", "Apple");
myMultimap.put("Fruits", "Pear");
myMultimap.put("Vegetables", "Carrot");
// Getting the size
int size = myMultimap.size();
System.out.println(size); // 4
// Getting values
Collection<string> fruits = myMultimap.get("Fruits");
System.out.println(fruits); // [Bannana, Apple, Pear]
Collection<string> vegetables = myMultimap.get("Vegetables");
System.out.println(vegetables); // [Carrot]
第二种可能性是创建Map<String, List<Object>>
并手动处理对需要与单个键关联的对象列表的引用。
有MultiMap,但这看起来不是一个好的用例,你应该使用Map<Product, Map<Years, Price>>
即
197 => {
1 year => 6
2 years => 12
}
如果您不想使用像番石榴这样的外部库,您可以创建自己的库。
HashMap<Integer, ArrayList<String>> hm = new HashMap();
for(int i = 0; i < 10; ++i){
ArrayList<String> li = new ArrayList();
for(int j = 0; j < 10; ++j)
li.add(j * i);
hm.put(i, li);
}
System.out.println(hm.get(4));//[0,4,8,12....]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.