2012-06-26 131 views
2

我有一個正在輸出的鎖組合集合。我想確保沒有重複的組合。這些組合不僅僅是整數。爲了簡化格式,我將它們全部轉換爲字符串。什麼是允許我循環和比較每個字符串的代碼行,以便不重複?有任何想法嗎?例如2D陣列字符串比較Java

謝謝。

+1

你是如何存儲集合?它是'java.util.List'的子類嗎? –

+0

是實時輸入或來自文件等的鎖定組合。 –

+0

如果您想要最簡單的解決方案,請嘗試將它們添加到「Set」(在此情況下,「HashSet」可能更好)。這可能不是最快的解決方案,但它應該足夠快並且很容易實現。 – biziclop

回答

0

不知道用什麼語言你的規劃要做到這一點用,但你可以檢查是否兩個字符串在C#像這樣

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

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

} 

相同的值,如果你必須通過一個字符串數組你可以循環他們。

它與其他語言如java,vb.net非常相似。

編輯:之後我開始寫我的回答中加入Java標記..對不起

希望這有助於

3

這可能是更容易的鎖定組合存儲在一組。這將使它更容易確保它們是獨一無二的。

這將是太多更快,因爲你並不需要每一個字符串的所有數據集中的其他琴絃的比較......

+0

對不起,我應該指定鎖組合的數目因用戶輸入而異。仍然可以將它們存儲在一個集合中? – Paul

+0

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

1

封裝通過Arrays.asList(T... a)每個組合的列表,以保持他們的訂貨和商店那些在HashSet確保唯一性和恆定的時間表現在contains(Object o)確定它是否已經存在。

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."); 
     } 
    } 
}