2012-06-26 9 views
2

J'ai une collection de combinaisons de verrous en cours de sortie. Je veux m'assurer qu'aucune combinaison n'est répétée. Les combinaisons ne sont pas seulement des ints. Je les ai tous convertis en Strings pour la simplicité du format. Quelle est la ligne de code qui me permet de faire une boucle et de comparer chaque chaîne de sorte qu'aucune ne soit répétée? Des idées? par exemple, tableaux 2DComparaison de chaînes Java

Merci.

+1

Comment stockez-vous la collection? Est-ce une sous-classe de 'java.util.List'? –

+0

sont les combinaisons de serrures entrées en temps réel ou à partir du fichier, etc. –

+0

Si vous voulez la solution la plus simple, essayez de les ajouter à un 'Set' (' HashSet' est probablement mieux dans ce cas). Ce n'est peut-être pas la solution la plus rapide, mais elle devrait être assez rapide et très facile à mettre en œuvre. – biziclop

Répondre

0

Je ne sais pas quelle langue votre planification à faire avec, mais vous pouvez vérifier si deux chaînes ont la même valeur en C# comme si

String myString = "Hello World!"; 
String myString2 = "Hello World!"; 

if(myString.equals(myString2)) { 
    //do something cause we have a match 

} 

si vous avez un tableau de chaînes que vous pouvez juste boucle à travers leur.

est très similaire dans d'autres langues comme java, vb.net.

EDIT: la balise java a été ajouté après avoir commencé à écrire ma réponse .. désolé

Hope this helps,

3

Il peut être plus facile de stocker vos combinaisons de verrouillage dans un ensemble. Cela rendrait beaucoup plus facile de s'assurer qu'ils sont uniques.

Ce sera beaucoup plus rapide aussi, puisque vous n'avez pas besoin de comparer toutes les chaînes avec toutes les autres chaînes dans votre ensemble de données ...

+0

Je suis désolé, j'aurais dû préciser que le nombre de combinaisons de verrous varie en fonction de l'entrée de l'utilisateur. Peut encore les stocker dans un ensemble? – Paul

+0

Oui. http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html – biziclop

1

Encapsulate chaque combinaison d'une liste par Arrays.asList(T... a) pour garder leur commande et magasin ceux dans un HashSet pour assurer l'unicité et la performance en temps constant sur contains(Object o) pour déterminer si elle est déjà présente.

import java.util.Arrays; 
import java.util.List; 
import java.util.HashSet; 

public class UniqueLocks { 
    public static void main (String[] args) { 
     List lock1 = Arrays.asList("1", "22", "333"); 
     List lock2 = Arrays.asList("a", "bb", "ccc"); 
     List lock3 = Arrays.asList("eee", "bbb", "ccc"); 

     HashSet uniqueLocks = new HashSet(Arrays.asList(lock1, lock2, lock3)); 

     List duplicateLock = Arrays.asList("1", "22", "333"); 

     if (uniqueLocks.contains(duplicateLock)) { 
      System.out.println("Lock [" + duplicateLock + "] already present."); 
     } 
    } 
}