当前位置: 首页 > 面试题库 >

具有重复键的Java映射[duplicate]

景宏朗
2023-03-14
问题内容

我正在创建一个需要存储键值对的程序。该程序需要接受键形式的请求,并返回相应的值。

问题在于每个键有时有多个值,并且map类不允许重复的键。

这些值是数字,因此无法像使用字符串那样有意义地连接这些值。

对于每个键可以有多个数值的事实,是否有任何优雅的解释方法?我希望返回每个数字,而不是随机返回一个数字。


问题答案:

$ cat YourMap.java
public class YourMap extends HashMap > {
public void put(String key, Integer number) {
List current = get(key);
if (current == null) {
current = new ArrayList ();
super.put(key, current);
}
current.add(number);
}



    public static void main(String args[]) {
        YourMap m = new YourMap();
        m.put("a", 1);
        m.put("a", 2);
        m.put("b", 3);
        for(Map.Entry e : m.entrySet()) {
            System.out.println(e.getKey() + " -> " + e.getValue());
        }
    }
}

$ java map
b -> [3]
a -> [1, 2]


 类似资料:
  • 我有两张阵列图。 有没有办法用流来完成这个任务? 或者我必须通过映射迭代?

  • 我可以有一个哈希图在Java看起来像这样吗? 我的问题和这里的类似问题 我是Java新手。所以我想知道的是,如果我需要上面这样的东西,如果它无效,什么是最好的数据结构?

  • 当这起作用时,它可能会引发重复键插入(相同的lastname)的异常。怎么抓?我不能在Tomap中声明try-catch。

  • 嗨,我在执行代码时遇到错误: 我正试图将我的列表分组到地图中:

  • 我有多个数组映射。 我想从多个地图中获取重复地图键的列表。 例如 除了遍历所有地图键,检查集合是否包含键,如果不将键添加到集合中,我想不出任何更干净的方法。有没有办法通过streams来实现这一点?

  • 如果我没有指定JoinColumn,hibernate将尝试使用字段child_username和child_parentid进行映射。如果我只指定一个Joincolumn,我会得到一个断开的映射。如果指定了两个JoinColumns,则parent上没有列可指定。 我如何映射这个类并将用户名作为标准传入?(它来自身份验证数据)或者如果我偏离了轨道,我如何以不同的方式这样做。