Ho nested LinkedList che contiene alcuni elementi. Voglio rimuovere Duplicate InnerListList da Outter LinkedList. L'ordine dell'elemento non importa. [Cat. , Mouse, Dog] è uguale a [Mouse, Cat, Dog] e voglio rimuovere 1 di loro. esempio:Rimuovi elementi duplicati da una lista collegata, in cui gli elementi di raccolta nidificati possono essere in qualsiasi ordine
supponiamo
[[Cat,Mouse,Dog],[Dog,Mouse,Cat],[Dog,Horse,Cat],[Dog,Tiger,Lion]]
poi voglio output come questo
[[Cat,Mouse,Dog],[Dog,Horse,Cat],[Dog,Tiger,Lion]]
ho provato. ma voglio soluzione ottimale ...... Il mio codice è il seguente
for (int iBoardListCnt = 0; this.roomCombinationsMasterList != null && iBoardListCnt < this.roomCombinationsMasterList.size(); iBoardListCnt++) {
LinkedList<Board> alRoomCombinationList = new LinkedList<>();
alRoomCombinationList = this.roomCombinationsMasterList.get(iBoardListCnt);
ArrayList<String> alTemp = new ArrayList();
for (int icount = 0; icount < alRoomCombinationList.size(); icount++) {
alTemp.add((alRoomCombinationList.get(icount).getRoomDescription() + alRoomCombinationList.get(icount).getDescription()).toString());
}
roomCombinationsMasterList.remove(iBoardListCnt);
Collections.sort(alTemp, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.compareToIgnoreCase(s2);
}
});
Iterator<LinkedList<Board>> iterator = roomCombinationsMasterList.iterator();
while (iterator.hasNext()) {
ArrayList<String> alTemp1 = new ArrayList<>();
for (Board data : iterator.next()) {
alTemp1.add((data.getRoomDescription() + data.getDescription()).toString());
}
Collections.sort(alTemp1, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.compareToIgnoreCase(s2);
}
});
if (alTemp.equals(alTemp1)) {
iterator.remove();
continue;
}
}
roomCombinationsMasterList.add(iBoardListCnt, alRoomCombinationList);
}
In questo codice ho preso elemento Pugno da nidificati LinkedList. memorizzato nella LinkedList temporanea ho rimosso quell'elemento dal main arraylist.Ora ho l'elemento successivo da LinkedList memorizzato in 2nd LinkList temporanea. Ordina sia LinkedList usando Comparator E usando il metodo equals() confronta questi due LinkedList.If entrambi sono identici, quindi rimuovi 1 di essi usando Iterator. per favore dammi una soluzione ottimale su di esso.
utilizza uno Set of Imposta un'opzione per te?Perché dovrebbero fare quello che vuoi. – Flown
No ... non posso usare Set collection ... perché i miei dati sono in forma di lista collegata di linkedlist –