重複の可能性:
2 つの arraylist を比較するには?
サイズの異なる 2 つの String ArrayLists があります。リスト A (大きい方のリスト) にリスト B (小さい方のリスト) のすべての値が含まれている場合に true を返すメソッドを作成する必要があります。そのようなメソッドを書くにはどうすればよいでしょうか? ありがとう!
重複の可能性:
2 つの arraylist を比較するには?
サイズの異なる 2 つの String ArrayLists があります。リスト A (大きい方のリスト) にリスト B (小さい方のリスト) のすべての値が含まれている場合に true を返すメソッドを作成する必要があります。そのようなメソッドを書くにはどうすればよいでしょうか? ありがとう!
をご覧くださいList.containsAll()
。
ドキュメントを一瞥するだけで十分な場合もあります (宿題でも ;])。
リストの代わりにセットを使用する必要があるようです。リストに対してこの操作を実行すると になりO(N^2)
ますが、HashSet または TreeSet に対してはそれぞれ または にO(N)
なります。O(NlogN)
ただし、パフォーマンスが大きな問題ではない場合 (つまり、リストが比較的小さい場合、または操作の頻度が低い場合) はcontainsAll
、適切なリスト オブジェクトに対してメソッドを使用してください。
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()
:)
おそらくもっと効率的な方法がありますが、できることは、大きなリストをループし、大きなリストのすべての要素について、小さなリストをループすることです。見つかった場合は早期に小さなリストから抜け出し、見つからなかった場合は 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;