我有兩個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