私はこのコードを持っています:
private void test(List<string> a)
{
}
forループを使用して、リストに重複するアイテムがあるかどうかを確認します。次に、nullでマークします。
私はこのコードを持っています:
private void test(List<string> a)
{
}
forループを使用して、リストに重複するアイテムがあるかどうかを確認します。次に、nullでマークします。
ここで何をしたいのか正確にはわかりませんが、リスト内の個別の値のコレクションを取得したい場合は、LINQを使用してこれを行うことができます。
var distinctOnes = a.Distinct();
文字列をループし、新しい文字列をHashSetに入れて、繰り返しを効率的にチェックできるようにします。
var set = new HashSet<string>();
for (int i = 0; i < a.Count; i++) {
if (set.Contains(a[i])) {
// duplicate
a[i] = null;
} else {
set.Add(a[i]);
}
}
副作用のあるメソッドSideEffectsAnswerは本当に避けるべきです。あなたはこのようにあなたが望むものを達成することができます:
private List<String> test(List<String> originalList)
{
List<String> returnList = new ArrayList<String>();
for (String value : originalList)
{
if (!returnList.contains(value))
{
returnList.add(value);
}
}
return returnList;
}
本当に必要な場合は、このメソッドを簡単に修正してnullを追加することもできます(すでに追加されている場合は何も追加しないのではなく)...
private bool HasDuplicates(List<string> a)
{
return a.Distinct().Count() != a.Count();
}
LINQを使用できます
var list = (from n in a select n).Distinct().ToList();
「a」に対してチェックできる一意のリストがあることを知ってください