Java 是否使用重复键但值不同的映射?
是否有任何方法可以使用map或任何其他允许我们存储重复密钥的集合Java 是否使用重复键但值不同的映射?,java,collections,Java,Collections,是否有任何方法可以使用map或任何其他允许我们存储重复密钥的集合 具有不同的值… 而不是使用列表为同一个键存储多个值 贴图不允许您拥有重复的密钥。这甚至没有道理 可能的解决方案是将值的列表(集合)。试试看。如果有什么事情阻止你,请告诉我们。地图不允许你有重复的钥匙。这甚至没有道理 可能的解决方案是将值的列表(集合)。去做吧。如果有什么事阻止你,请告诉我们。下一个呢 Map<String, List<String>> map = new HashMap<>();
具有不同的值…
而不是使用列表为同一个键存储多个值 贴图不允许您拥有重复的密钥。这甚至没有道理
可能的解决方案是将
值的列表
(集合)
。试试看。如果有什么事情阻止你,请告诉我们。地图不允许你有重复的钥匙。这甚至没有道理
可能的解决方案是将值的列表
(集合)
。去做吧。如果有什么事阻止你,请告诉我们。下一个呢
Map<String, List<String>> map = new HashMap<>();
Map Map=newhashmap();
增加价值
//添加“key1”和“value1”
如果(!map.containsKey(“key1”)){
put(“key1”,newarraylist());
}
映射。获取(“键1”)。添加(“值1”);
//添加“键1”和“值2”
如果(!map.containsKey(“key1”)){
put(“key1”,newarraylist());
}
映射。获取(“键1”)。添加(“值2”);
获取价值
List values=map.get(“key1”);
此选项包含字符串,但可用于任何类型。您不需要额外的库。下一个呢
Map<String, List<String>> map = new HashMap<>();
Map Map=newhashmap();
增加价值
//添加“key1”和“value1”
如果(!map.containsKey(“key1”)){
put(“key1”,newarraylist());
}
映射。获取(“键1”)。添加(“值1”);
//添加“键1”和“值2”
如果(!map.containsKey(“key1”)){
put(“key1”,newarraylist());
}
映射。获取(“键1”)。添加(“值2”);
获取价值
List values=map.get(“key1”);
此选项包含字符串,但可用于任何类型。而且您不需要额外的库。使用Google Guava的MultiMap。这允许使用单个键使用多个值
使用谷歌番石榴的多重地图。这允许使用单个键使用多个值
有一个
多地图
概念。例如番石榴
但它不是集合框架的一部分
如果您不希望像这样的签名映射
,您可以很容易地用object将其包装起来。例如
class Items {
private List<Item> items;
public void add(Item i) {}
}
类项目{
私人清单项目;
公共空白添加(项目一){}
}
当然,不可能通过map实例将项目添加为
map。add(“key”,item)
有一个多映射的概念。例如番石榴
但它不是集合框架的一部分
如果您不希望像这样的签名映射
,您可以很容易地用object将其包装起来。例如
class Items {
private List<Item> items;
public void add(Item i) {}
}
类项目{
私人清单项目;
公共空白添加(项目一){}
}
当然,不可能通过map实例将项目添加为map.add(“key”,item)
您可以使用apache commons集合中的MultiMap
您可以使用apache commons集合中的MultiMap
Map
绝对是正确的选择。我不知道这一点。如果该键指向多个值,您将如何查找该键的值?我认为最好的问题是。当您调用map.get(key)
时,该映射包含多个key
。您希望返回什么?实现您自己的映射,但我看不出其中的含义。你所寻找的东西背后的逻辑是什么,带键和列表的地图无法提供?你能稍微看看你所面临的场景吗,这让你有了这个需求Map
绝对是正确的选择。我不知道。如果该键指向多个值,您将如何查找该键的值?我认为最好的问题是。当您调用map.get(key)
时,该映射包含多个key
。您希望返回什么?实现您自己的映射,但我看不出其中的含义。你所寻找的东西背后的逻辑是什么,带有键和列表的映射无法提供?你能稍微看一下你所面临的场景吗,这会让你有这个需求+1,但是OP应该意识到这实际上是,而不是使用列表来存储同一个键的多个值?
+1,但是OP应该意识到,这实际上是而不是使用一个列表来存储同一个键的多个值?
好的,使用具有同一个键的值的列表的方法,只是想知道是否有比这更好的方法..不确定“任何方法更好”;这听起来确实是正确的方法。不过,根据上下文的不同,地图有时可能会更好。价值的顺序重要吗?是否有(任何给定密钥的)副本?有时,使用TreeSet(自然顺序)或LinkedHashSet(插入顺序)可能也很有用。@Paul理解您的意图:)在某种意义上的值列表,为单个键提供一组值。选择集合是下一步+1.好主意。OP Pankaj的第一个疑问是是否要收集。好的,使用具有相同键的值列表的方法,只是想知道是否有比此更好的方法。不确定“任何更好的方法”;这听起来确实是正确的方法。不过,根据上下文的不同,地图有时可能会更好。价值的顺序重要吗?是否有(任何给定密钥的)副本?有时,使用TreeSet(自然顺序)或LinkedHashSet(插入顺序)可能也很有用。@Paul理解您的意图:)在某种意义上的值列表,为单个键提供一组值。选择集合是下一步+1.好主意。OP Pankaj的第一个疑问是是否要收藏。