コンパレータを使用して別の配列(長さが異なる)に従って配列を並べ替えると、順序が正しくなくなります

ジョン・マークソン:

配列を別の配列に従ってソートする必要があります。例:

list1:[221、54、50、138、125、145]

リスト2:[50、125]

ソートされたリスト1は次のようになります:[50、125、221、54、138、145]

私は次のコードを試しました:

Collections.sort(list1, Comparator.comparing(listItem -> list2.indexOf(listItem)));

しかし、これは次の結果になります:[221、54、138、145、50、125]

トップと残りの50と125を取得するにはどうすればよいですか?

エクラビア:

ときlist1要素が中に含まれていません。list2その後、indexOf戻る-1、それらの値が最初に来る理由のを。したがって、これらの値を使用する場合list1.size()、それらの値は後で取得されます。

Collections.sort(list1, Comparator.comparing(listItem -> list2.contains(listItem) ? list2.indexOf(listItem): list1.size()));

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ