下面是什么机制使相同的不同类型?import static org.testng.Assert.assertEquals;@Testpublic void whyThisIsEqual() { assertEquals(new HashSet<>(), new ArrayList<>());}
3 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
他们不是...
System.out.println(new HashSet<>().equals(new ArrayList<>())); // false
这是特定于 testng
assertEquals
查看该方法的文档,它说:
断言两个集合以相同的顺序包含相同的元素。
这对我来说很荒谬,aSet
本身没有订单。
Set<String> set = new HashSet<>();
set.add("hello");
set.add("from");
set.add("jug");
System.out.println(set); // [from, hello, jug]
IntStream.range(0, 1000).mapToObj(x -> x + "").forEachOrdered(set::add);
IntStream.range(0, 1000).mapToObj(x -> x + "").forEachOrdered(set::remove);
System.out.println(set); // [jug, hello, from]
因此,比较这些反对Collection
在一些特定的时间点会产生有趣的结果。
更糟糕的是,java-9
Set::of
方法在内部实现了随机化,因此顺序(或不是顺序)将因运行而异。
添加回答
举报
0/150
提交
取消