EDITAR
Voici deux versions. L'une utilisant ArrayList
et d'autres utilisant HashSet
Comparez-les et créez votre propre de cette version, jusqu'à ce que vous obteniez ce dont vous avez besoin.
Cela devrait suffire à couvrir le :
P.S. : Ce n'est pas un devoir scolaire :) Donc si vous me guidez, ce sera suffisant.
partie de votre question.
en poursuivant la réponse initiale :
Vous pouvez utiliser un java.util.Collection
et/ou java.util.ArrayList
pour ça.
El retainAll fait ce qui suit :
Conserve uniquement les éléments de cette collection qui sont contenus dans la collection spécifiée.
voir cet échantillon :
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 );
}
}
EDITAR
Pour la deuxième partie (valeurs similaires), vous pouvez utiliser la méthode suivante removeAll méthode :
Supprime tous les éléments de cette collection qui sont également contenus dans la collection spécifiée.
Cette deuxième version vous donne également les valeurs similaires et les manipulations répétées ( en les écartant).
Cette fois, le Collection
pourrait être un Set
au lieu d'un List
(la différence est que le Set n'autorise pas les valeurs répétées).
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);
}
}
Sortie :
$ 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]
S'il ne répond pas exactement à vos besoins, il vous donne un bon point de départ pour que vous puissiez vous débrouiller à partir de là.
Question pour le lecteur : Comment inclure toutes les valeurs répétées ?
1 votes
Veuillez suggérer une structure de données, la liste n'est pas une liste java ou hashmap ou toute autre structure de données.
2 votes
Pensez à ce que vous devez faire dans des cas exceptionnels. Les listes peuvent-elles contenir deux fois la même valeur ? Si c'est le cas, si "dingo" figure deux fois dans les deux listes, cela compte-t-il comme deux éléments en commun ou comme un seul ?
0 votes
Pouvez-vous modifier l'une des listes ?
0 votes
Comment modifier ? Oui, chaque liste peut contenir des valeurs similaires plusieurs fois
0 votes
Il devrait y avoir un modifier petit lien juste après la question, sous les balises.