У меня есть два очень больших ArrayList
, каждый из которых содержит миллионы данных.Я хочу отфильтровать данные из List1
, которого нет в List2
и / или наоборот.
Я пробовал Apache CollectionUtils, потоковый API Java 8, но безуспешно.
Параллельная потоковая передача Java 8 потребляет весь ЦП, а CollectionUtils продолжает сравнивать набор данных без вывода.
Пример POJO
public DataVO {
private String id;
private String value;
...
// getters / setters
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = (prime * result) + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(final Object obj) {
...
...
final DataVO other = (DataVO) obj;
if (id == null) {
if (other.id != null) {
return false;
}
}
else if (!id.equals(other.id)) {
return false;
}
return true;
}
}
hashCode() / equals () может иметь больше полей, так как сейчас я сохранил это просто.
Я также попытался разбить List1
на более мелкие куски, а затем попытался сравнить с List2
безрезультатно.Я смотрел на другие вопросы, но ни один из них не рассматривал чрезвычайно большой объем.
Пожалуйста, дайте мне знать, если у вас есть какие-либо указатели.