-1

重複の可能性:
2 つの arraylist を比較するには?

サイズの異なる 2 つの String ArrayLists があります。リスト A (大きい方のリスト) にリスト B (小さい方のリスト) のすべての値が含まれている場合に true を返すメソッドを作成する必要があります。そのようなメソッドを書くにはどうすればよいでしょうか? ありがとう!

4

4 に答える 4

3

をご覧くださいList.containsAll()

ドキュメントを一瞥するだけで十分な場合もあります (宿題でも ;])。

于 2012-05-20T06:03:53.327 に答える
2

リストの代わりにセットを使用する必要があるようです。リストに対してこの操作を実行すると になりO(N^2)ますが、HashSet または TreeSet に対してはそれぞれ または にO(N)なります。O(NlogN)

ただし、パフォーマンスが大きな問題ではない場合 (つまり、リストが比較的小さい場合、または操作の頻度が低い場合) はcontainsAll、適切なリスト オブジェクトに対してメソッドを使用してください。

于 2012-05-20T06:04:11.593 に答える
0
            public boolean containsAll(List<String> listA, List<String> listB) {
                Set<String> listAAsSet = new HashSet<String>(listA);

                for (String string : listB) {

                    if(listAAsSet.contains(string)==false) {
                        return false;
                    }
                }
                return true;
            }

または、使用することもできますList.containsAll():)

于 2012-05-20T06:06:28.147 に答える
0

おそらくもっと効率的な方法がありますが、できることは、大きなリストをループし、大きなリストのすべての要素について、小さなリストをループすることです。見つかった場合は早期に小さなリストから抜け出し、見つからなかった場合は false を返します。

bool found = false;

for (string a : listA)
{
   found = false;
   for (string b : listB)
   {
      if (b.equals(a))
      {
         found = true;
         break;
      }
   }

   if (!found)
      return false;
}

return true;
于 2012-05-20T06:08:03.450 に答える