問題の説明:
大きな食器セットAと小さな食器セットBがあります。これら2つのセット、つまりAには存在するがBには存在しないセットの違いを見つける必要があります。
ソリューション:
- 小さなテーブルセットBをHashSetに変換します。
- 大きなテーブル内の全量のデータをトラバースして、要素がHashSetに存在するかどうかを判断し、存在しない場合は、一時リストに配置します。
- 最後に、一時リストが返されます。
アルゴリズムの実装:
package com.test;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
public class ExceptList {
private static List<String> getExceptList(List<String> allList, List<String> partList) {
if (allList != null && partList != null && !partList.isEmpty()) {
HashSet<String> partSet = new HashSet<>(partList);
List<String> exceptList = new ArrayList<>();
for (String str : allList) {
if (!partSet.contains(str)) {
exceptList.add(str);
}
}
return exceptList;
} else {
return allList;
}
}
public static void main(String[] args) {
List<String> allList = new ArrayList<>();
allList.add("aaa");
allList.add("bbb");
allList.add("ccc");
allList.add("ddd");
List<String> partList = new ArrayList<>();
partList.add("bbb");
partList.add("ccc");
partList.add("eee");
List<String> exceptList = getExceptList(allList, partList);
System.out.println(exceptList);
}
}