我有两个ArrayList中再次包含硬件类型的ArrayList:的Java:比较两个的ArrayList其中包含内的ArrayList
private ArrayList<ArrayList<Hardware>> list1;
private ArrayList<ArrayList<Hardware>> list2;
类硬件中包含的ElementType枚举,其中确定硬件的类型:
enum ElementType{
Microcontroller;
Core;
Memory;
Sensor;
Pin;
Port;
}
为list1的实施例,其中包含3 ArrayList的类型的硬件:
[Microcontroller, Memory]
[Port]
[Pin]
示例列表2,其中包含6 ArrayList的硬件类型:
[Microcontroller, Memory]
[Microcontroller, Memory]
[Microcontroller, Port]
[Microcontroller, Core]
[Sensor]
[Pin]
现在我要检查,如果列表1中所有的ArrayList都包含在列表2,并且具有相同的顺序:
这将是有效的:
[Microcontroller, Memory, Core] == [Microcontroller, Memory, Core]
,而这将有不一样的秩序,因此是无效的:
[Microcontroller, Memory, Core] == [Microcontroller, Core, Memory]
最后,我需要知道列表1中的所有ArrayList是否在列表2中的顺序相同,列表2中的哪一个也是它。
我这个struggeling了一段时间,因为我不知道如何使用收集的辅助方法,这和我使用循环的第一个想法是相当差并没有帮助我:
private void check() {
for (ArrayList<Hardware> listOf1 : list1) {
for (Hardware abstHw : listOf1) {
System.out.println(abstHw);
????????????
}
}
}
任何人都可以帮助我,或给我一些方便的提示?
干杯, 菲尔
------------------编辑---------------
只是为了澄清:
list1和list2的硬件实例是不一样的!它们只能通过ElementType进行比较。
这看起来很简单,但它不是。使用有一个ArrayList的ArrayList和比较你需要循环,然后调用containsAll –
@GV你错了。通过'containsAll'将子数组列表与'equals'进行比较,这就是我们想要的。 – tbodt
另外它会比较包含的对象,它们是HardwareElement的实例。两个列表都包含不同的对象,只有ElementType可以是相同的 – ph09