2017-05-27 8 views
-1

私は2、3、4などのペアを見つけることができるコードを書く必要がある学校でプロジェクトに取り組んでいます...私は既に2,3などのペアを見つける方法を知っています:リストでペアを見つける

for (int i = 0; i < list.Count; i++) 
{ 
    for (int j = 0; j < list.Count; j++) 
    { 
     if (list[i].Efternamn == list[j].Efternamn && i != j) 
     { 
      textBox4.Text = "A pair was found!"; 
      break; 
     } 
     else 
     { 
      textBox4.Text = "No pairs!"; 
     } 
    } 
} 

が、コードはちょっと繰り返している...ループに対して多くすることなく、効率的な方法で100または200のペアを見つけるために他の方法はありますか?

+0

リストをソートすると、すべての重複が互いに隣り合うようになります。 – poke

答えて

1

辞書やハッシュテーブルを学習しましたか?各エントリをキーとして辞書に入れ、値としてカウントを入れることができます。

+0

私は悲しいかなく辞書やハッシュテーブルに入っていませんが、私はそれらを覚えています。答えをありがとう! –

0

あなたのケースでは不正行為かどうかはわかりませんが、Linqで簡単に解決できます。この場合、Linqは内部的に(おそらく)辞書を使います。

var valuesAndCounts = list 
    .GroupBy(x => x) 
    .Select(g => new {Value=g.Key, Count=g.Count()}) 
    .Where(p => p.Count > 1); // or == 2 or == 100 etc 
関連する問題