根据逻辑,我需要实现两个List
,如果它们以相同的“相对”顺序具有相同的元素,则它们被认为是相等的。
举个例子,以下一对列表被认为彼此相等:
[0, 1, 2, 3]
[2, 3, 0, 1]
[C, F, B, A]
[F, B, A, C]
只要遵守相对顺序,就可以认为它们是平等的。
作为反例,这两个不相等:
[A, B, C, D]
[C, A, D, B]
导致 A
和 D
交换到位。
所以,基本上我发现这很有挑战性,因为这不是顺序完全重要的情况,也不是顺序完全不重要的情况。在这种情况下,我会使用普通的< code>list1.equals(list2)方法,或者在另一种情况下通过< code>Set对象传递。
现在,我已经考虑了一个“虚拟”方法:
>
通过Set
检查2个列表的组成。
如果它们由相同的元素组成,请检查相对顺序,如下所示:
list2
,直到找到位于list1
第一个位置的元素;list2
中的索引0开始,逐个元素检查它们是否处于相同的相对顺序。希望在Java
中已经有了开箱即用的更有效率的东西来完成我正在做的事情。
提前感谢任何回答:)
诚然,我并没有涵盖所有的可能性,但这可能会奏效。首先比较尺寸。如果相等,则将一个列表附加到自身,并查看第一个列表是否是该列表的子列表
。我使用字符串,但可能有一种更有效的方法。值得思考的事情。
List<Integer> list1 = List.of(1, 2, 3, 4);
List<Integer> list2 = new ArrayList<>(List.of(3, 4, 1, 2));
if (list1.size() == list2.size()) {
list2.addAll(list2);
String s2 = list2.stream().map(String::valueOf).collect(Collectors.joining());
String s1 = list1.stream().map(String::valueOf).collect(Collectors.joining());
if (s2.contains(s1)) {
System.out.println("Lists are equal");
return;
}
}
System.out.println("Lists are not equal");
指纹
Lists are equal
问题内容: 我如何测试python中两个JSON对象是否相等,而忽略列表的顺序? 例如 … JSON文档 a : JSON文档 b : 并且即使列表的顺序不同,也应该比较相等。 问题答案: 如果要使两个具有相同元素但顺序不同的对象相等,那么显而易见的事情是比较它们的排序后的副本-例如,以JSON字符串和表示的字典: …但这是行不通的,因为在每种情况下,顶层dict的项都是具有相同元素的列表,但是顺
问题内容: 我如何测试python中两个JSON对象是否相等,而忽略列表的顺序? 例如 … JSON文档a: JSON文档b: 并且应该比较相等,即使列表的顺序不同。 问题答案: 如果你想要两个具有相同元素但顺序不同的对象相等,那么显而易见的事情是比较它们的排序后的副本-例如,以JSON字符串和表示的字典: …但这是行不通的,因为在每种情况下,”errors”顶层dict的项都是具有相同元素的列表
问题内容: 语境 我正在为该类编写一个简单的 JUnit 测试。 阿可以从静态工厂方法,需要一个可变参数的创建 字符串 。 在的存在期间的任何时间,客户端可以检查它通过在的形式创建的参数 列表 ,通过方法。 换句话说,a 既记住并公开了使之成为现实的参数列表。有关此合同的更多详细信息: 的顺序将与为对象创建选择的顺序相同 允许重复的后续 String 组件并按顺序保留 行为未定义(其他代码保证没有
我的数据库中有两个表,这些表具有相同的精确列和数据类型,但顺序不同。 表A有列:A、B、C、D。 表B有以下列:A、C、D、B。 我有一个使用JooQ查询数据库的应用程序,它利用Codigen来创建表格和记录。但是,由于编译错误,它不允许我合并两个选择语句。我能做什么,把两张桌子合并起来? 在union函数内部的变量上,它与SelectUnionStep中的类型不匹配有关。关于union(ARec
问题内容: 这样的情况有效吗? 问题答案: 没有。 元素ID在整个文档中应该是唯一的。
的顺序将与为创建对象选择的顺序相同 允许重复的后续字符串组件并按顺序保留 未定义的行为(其他代码保证没有进入工厂) 在对象实例化之后,没有任何方法可以更改组件列表 我正在编写一个简单的测试,该测试从字符串列表创建并检查它是否可以通过返回相同的列表。我立即这样做,但这应该发生在一个现实的代码路径的远处。 这里是我的尝试: null null