March 4
Una lista concatenata è uno dei principali tipi di strutture di dati nel mondo della programmazione. Si tratta di una disposizione di nodi che contiene sia i dati e riferimenti che puntano al nodo successivo. Per ordinare una lista collegata in Java, c'è una classe lista collegata che funziona con il quadro Collezioni che implementa algoritmi come l'ordinamento.
1 Dichiarare la lista collegata con la creazione di un nuovo oggetto LinkedList e assegnando a una variabile LinkedList. LinkedList eredita dalla classe List generica, in modo che qualsiasi metodo che accetta un elenco accetta anche un oggetto LinkedList.
""LinkedList l = new LinkedList();""
2 Aggiungere oggetti dello stesso tipo (ad esempio interi) all'elenco. Questi possono essere oggetti di qualsiasi tipo, ma per ordinare una lista collegata, dovrebbero essere tutte dello stesso tipo.
3 Utilizzare il metodo List.addFirst per inserire nuovi oggetti per l'inizio della lista, in modo che tutto ciò che gli oggetti si aggiungono sarà in ordine inverso. Se si desidera aggiungerli alla fine della lista, utilizzare il metodo List.addLast. ""list.addFirst(1);
list.addFirst(3);
list.addFirst(2);""""list.addFirst(1);
list.addFirst(3);
list.addFirst(2);""
4 Utilizzare un Iterator per scorrere l'elenco, e stamparli prima e dopo per vedere che cosa il metodo di ordinamento sta facendo. ""for( Iterator i = list.iterator(); i.hasNext(); ) {
System.out.println(i.next());
}""""for( Iterator i = list.iterator(); i.hasNext(); ) {
System.out.println(i.next());
}""
5 Ordinare l'elenco con il comparatore di default. Un comparatore è un oggetto che confronta due oggetti. L'oggetto predefinito comparatore utilizza l'operatore Minore di, in modo che la lista verrà ordinata in ordine crescente. Per ordinare l'elenco, utilizzare il metodo statico Collections.sort. ""Collections.sort(list);""
6 Ordinare l'elenco con un comparatore personalizzato scrivendo una classe che implementa l'interfaccia di confronto e passa ad essa un'istanza come un argomento per ordinare. La classe che implementa solo comparatore deve implementare il metodo singolo "confrontare." ""public class GreaterThan implements Comparator {@Override
public int compare(Object arg0, Object arg1) {
int x = (Integer)arg0;
int y = (Integer)arg1;
if(x > y) {
return -1;
} else if(x == y) {
return 0;
} else {
return 1;
}
}}""""public class GreaterThan implements Comparator {@Override
public int compare(Object arg0, Object arg1) {
int x = (Integer)arg0;
int y = (Integer)arg1;
if(x > y) {
return -1;
} else if(x == y) {
return 0;
} else {
return 1;
}
}}""
7 Utilizzare la chiamata a Collections.sort passando una nuova istanza di GreaterThan come secondo argomento. Dal momento che gli oggetti che sono maggiori saranno ordinati prima, l'elenco verrà ordinato in ordine decrescente invece di ordine crescente. In alternativa, se si sta ordinare un elenco di oggetti di una classe personalizzata ti hai scritto, che classe può implementare l'interfaccia Comparable invece di utilizzare una classe comparatore separata. ""Collections.sort(list, new GreaterThan());""