-2

Java (grails) にリストのリストがあり、リスト内の各リストに存在する要素を見つけようとしています。これを行う簡単な方法はありますか?ありがとうございました!

4

2 に答える 2

1

リストに一意の要素がある場合、次のようにすることができます(一意の要素ですが、1つの要素をいくつかのリストに配置できることは理解していますが、リストごとに1回だけです。それ以外の場合、最初のリストに[1,2,2,3]が含まれ、他に含まれる場合[x,2,y] を出力すると、[2] ではなく [2,2] が表示されます)

List tmpList=new ArrayList<>(lists.get(0));
for(int i=1; i<lists.size(); i++)
    tmpList.retainAll(new ArrayList<>(lists.get(i)));
System.out.println(tmpList);
于 2012-07-05T18:37:22.870 に答える
0

1 つのリンク リストを取得してコピーし、それを他のすべてのリンク リストと照合します。

リストに要素がない場合は、新しく作成したリストからその要素を削除します。

新しく作成したリストをマップまたはハッシュ テーブルとして実装して、時間の複雑さを少し軽減できます。

いずれにせよ、リストがソートされているか何かでない限り、アルゴリズムは O(n) よりも高速になることはできません。ここで、n はすべてのリストのすべての要素の合計です。

私が概説したアルゴリズムは O(nm) で、m は最小リストのカウントです。

于 2012-07-05T18:32:15.300 に答える