EDIT
Qui ci sono due versioni. Un utilizzando ArrayList
e altro utilizzando HashSet
confrontarli e creare la propria versione da questo, fino ad ottenere quello che ti serve.
Questo dovrebbe essere sufficiente a coprire il:
PS: Non è un compito scolastico :) Quindi, se mi guidi sarà sufficiente
parte della tua domanda .
continuare con la risposta originale:
È possibile utilizzare un java.util.Collection
e/o java.util.ArrayList
per questo.
Il metodo retainAll esegue le seguenti operazioni:
conserva solo gli elementi di questa raccolta che sono contenuti nell'insieme specificato
see questo esempio:
import java.util.Collection;
import java.util.ArrayList;
import java.util.Arrays;
public class Repeated {
public static void main(String [] args) {
Collection listOne = new ArrayList(Arrays.asList("milan","dingo", "elpha", "hafil", "meat", "iga", "neeta.peeta"));
Collection listTwo = new ArrayList(Arrays.asList("hafil", "iga", "binga", "mike", "dingo"));
listOne.retainAll(listTwo);
System.out.println(listOne);
}
}
EDIT
per la seconda parte (valori simili) è possibile utilizzare il metodo removeAll:
rimuove tutti gli elementi di questa collezione che sono anche contenuti nella raccolta specificata.
Questa seconda versione fornisce anche i valori e le maniglie simili ripetuti (scartandoli).
Questa volta il Collection
potrebbe essere un Set
invece di un List
(valori la differenza è, il set non consente ripetute)
import java.util.Collection;
import java.util.HashSet;
import java.util.Arrays;
class Repeated {
public static void main(String [] args) {
Collection<String> listOne = Arrays.asList("milan","iga",
"dingo","iga",
"elpha","iga",
"hafil","iga",
"meat","iga",
"neeta.peeta","iga");
Collection<String> listTwo = Arrays.asList("hafil",
"iga",
"binga",
"mike",
"dingo","dingo","dingo");
Collection<String> similar = new HashSet<String>(listOne);
Collection<String> different = new HashSet<String>();
different.addAll(listOne);
different.addAll(listTwo);
similar.retainAll(listTwo);
different.removeAll(similar);
System.out.printf("One:%s%nTwo:%s%nSimilar:%s%nDifferent:%s%n", listOne, listTwo, similar, different);
}
}
uscita:
$ java Repeated
One:[milan, iga, dingo, iga, elpha, iga, hafil, iga, meat, iga, neeta.peeta, iga]
Two:[hafil, iga, binga, mike, dingo, dingo, dingo]
Similar:[dingo, iga, hafil]
Different:[mike, binga, milan, meat, elpha, neeta.peeta]
Se esso doesn' Fare esattamente ciò che ti serve, ti dà un buon inizio in modo da poter gestire da qui.
Domanda per il lettore: come includere tutti i valori ripetuti?
Per qualsiasi proposta di struttura di dati l'elenco non è lista Java o hashmap o qualsiasi struttura di dati – user238384
Assicurarsi di pensare a quello che si dovrebbe fare in casi eccezionali. Le liste possono contenere lo stesso valore due volte? In tal caso, se "dingo" è presente in entrambe le liste due volte, conta due elementi in comune o uno solo? – JavadocMD
È possibile modificare uno degli elenchi? –