Java HashMap,根据键向ArrayList追加新值

Java HashMap,根据键向ArrayList追加新值,java,arraylist,hashmap,Java,Arraylist,Hashmap,我遇到了一个测试驱动的开发问题,我需要使它基于junit方法工作,junit方法基于实现一个HashMap,该HashMap使用字符串作为键,使用ArrayList作为值。该键需要能够支持一个或多个相应的值。我需要将我的方法设置为可以从散列中添加或减去值,然后查看散列的更新内容。我的任务是获取下面显示的unit方法提供的信息,练习myClass和它的addingMethod,并将其正确地放入哈希中 void add() { myClass = new MyClass("key1", "v

我遇到了一个测试驱动的开发问题,我需要使它基于junit方法工作,junit方法基于实现一个HashMap,该HashMap使用字符串作为键,使用ArrayList作为值。该键需要能够支持一个或多个相应的值。我需要将我的方法设置为可以从散列中添加或减去值,然后查看散列的更新内容。我的任务是获取下面显示的unit方法提供的信息,练习myClass和它的addingMethod,并将其正确地放入哈希中

void add() {
    myClass = new MyClass("key1", "value1");
    myClass.addingMethod("blargh", "blarghvalue");
    myClass.addingMethod("blargh2", "uglystring");
    myClass.addingMethod("blargh", "anotherstring");
    //and so on and so on............
对于最终结果,当我打印myClass的结果时,我需要看到如下内容: {blargh=[blarghvalue,另一个字符串],blargh2=uglystring}

我需要能够添加到这个,并删除值以及

显然,我对java集合非常陌生。如果它们只有1:1的关系,并且hashmap是1:1,我就可以让它们工作。因此,一个非常简单的添加方法如下:

public void addingMethod(String key, String value) {
    hashMap.put(key, value);
将得到一个字符串hashmap,但当然,如果我将一个键与一个新的键值对重用,原始键值将被踩到并消失。但是,当涉及到动态处理hashmaps和ArrayList时,除了1:1的键:值关系之外,我就不知所措了

您需要的是映射和内部输入检查条目是否存在,如果存在,则添加到列表中

像下面一样声明你的地图

Map<String, List<String>> map = new HashMap<String, List<String>>();
您需要的是映射和内部输入检查条目是否存在,如果存在,则添加到列表中

像下面一样声明你的地图

Map<String, List<String>> map = new HashMap<String, List<String>>();
听起来你需要一个由谷歌伟大的:

类似于映射的集合,但可以将多个值与单个键关联。如果使用相同的键但不同的值调用putK,V两次,则多重映射包含从键到两个值的映射

听起来你需要一个由谷歌伟大的:

类似于映射的集合,但可以将多个值与单个键关联。如果使用相同的键但不同的值调用putK,V两次,则多重映射包含从键到两个值的映射


为什么人们总是链接到Guava版本3的文档?LouisWasserman:因为它们是谷歌搜索Java Guava Multimap时的第一个热门,所以很容易错过。让我说,作为一个Java新手,这是一个了不起的发现,尽管肯定是所有兽医都会看到的。非常感谢,我刚刚保存了几行代码,这让我很头疼。虽然我也想找出实现它的“其他”方法,以加强我的java基础。@City17Mogul:是的,使用经过良好测试的实用程序项目,如Guava和Apache Commons,将对您有很大帮助。看看AmitD的答案:手动实现它的一种方法。为什么人们一直链接到Guava版本3的文档?LouisWasserman:因为它们是谷歌搜索Java Guava Multimap时的第一个热门,所以很容易错过。让我说,作为一个Java新手,这是一个了不起的发现,尽管肯定是所有兽医都会看到的。非常感谢,我刚刚保存了几行代码,这让我很头疼。虽然我也想找出实现它的“其他”方法,以加强我的java基础。@City17Mogul:是的,使用经过良好测试的实用程序项目,如Guava和Apache Commons,将对您有很大帮助。看看AmitD的答案,这是手动实现它的一种方法。这很好,但是如何打印它?你保存了我的一天这很好,但是如何打印它?你保存了我的一天