出力されているロックの組み合わせのコレクションがあります。組み合わせが繰り返されないようにしたいと思います。組み合わせは単なるintではありません。フォーマットを簡単にするために、それらをすべて文字列に変換しました。繰り返されないように各文字列をループして比較できるようにするコード行は何ですか?何か案は?例:2Dアレイ
ありがとうございました。
出力されているロックの組み合わせのコレクションがあります。組み合わせが繰り返されないようにしたいと思います。組み合わせは単なるintではありません。フォーマットを簡単にするために、それらをすべて文字列に変換しました。繰り返されないように各文字列をループして比較できるようにするコード行は何ですか?何か案は?例:2Dアレイ
ありがとうございました。
ロックの組み合わせをセットに保管する方が簡単な場合があります。これにより、それらが一意であることを確認することがはるかに簡単になります。
すべての文字列をデータセット内の他のすべての文字列と比較する必要がないため、これもはるかに高速になります...
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.");
}
}
}
これを行う予定の言語はわかりませんが、2 つの文字列が C# で同じ値を持っているかどうかを確認できます。
String myString = "Hello World!";
String myString2 = "Hello World!";
if(myString.equals(myString2)) {
//do something cause we have a match
}
文字列の配列がある場合は、それらをループするだけです。
Java、vb.net などの他の言語でも非常によく似ています。
編集:答えを書き始めた後、Javaタグが追加されました..申し訳ありません
お役に立てれば、