gpt4 book ai didi

java - 如何断言数组的 Java Hashmap?

转载 作者:行者123 更新时间:2023-11-30 07:14:58 25 4
gpt4 key购买 nike

我正在通过组合其他三个 HashMap ( )并添加文件名来构建一个新的 HashMap ( )。我如何断言新的 HashMap 是正确的?嵌套数组导致测试失败。

此代码是我失败测试的简化示例:

@Test
public void injectArrayIntoHashMap() {
HashMap map = new HashMap();
map.put("hi", new String[] { "hello", "howdy" });

HashMap newMap = new HashMap();
newMap.put("hi", new String[] { "hello", "howdy" });

assertEquals(map, newMap);
}

更新:好的,根据 Hna 的建议,我使用 ArrayList 进行了测试。但是,我随后意识到我需要在 ArrayList 中实例化一个对象,现在测试失败了。这似乎与 ArrayList 中的对象具有不同的内存地址这一事实有关。我是 Java 的新手,将对象插入 ArrayList 这是我试图避免“if”语句的尝试。有没有更好的办法?或者只是让我的测试通过的简单答案?

这是新代码:

@Test
public void sampleTest() throws IOException {
HashMap expectedResult = new HashMap();
expectedResult.put("/images", new ArrayList(Arrays.asList("/images", new Public())));
expectedResult.put("/stylesheets", new ArrayList(Arrays.asList("/stylesheets", new Public())));

HashMap actualResult = test();

assertEquals(expectedResult, actualResult);
}

public HashMap test() {
HashMap hashMap = new HashMap();
hashMap.put("/images", new ArrayList(Arrays.asList("/images", new Public())));
hashMap.put("/stylesheets", new ArrayList(Arrays.asList("/stylesheets", new Public())));
return hashMap;
}

最佳答案

这会失败,因为当 assertEquals 在数组之间进行比较时,它会检查内存地址是否相等,这显然失败了。解决问题的一种方法是使用像 ArrayList 这样的容器,它实现了 equals 方法,并且可以按照您想要的方式进行比较。

这是一个例子:

public void injectArrayIntoHashMap() {
HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
ArrayList<String> l1 = new ArrayList<String>();
l1.add("hello");
l1.add("howdy");
map.put("hi", l1);

HashMap<String, ArrayList<String>> newMap = new HashMap<String, ArrayList<String>>();
ArrayList<String> l2 = new ArrayList<String>();
l2.add("hello");
l2.add("howdy");
newMap.put("hi", l2);

System.out.println(map.equals(newMap));
}

关于java - 如何断言数组的 Java Hashmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18165660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com