Вопрос прост:
У меня есть два Списка
List<String> columnsOld = DBUtils.GetColumns(db, TableName);
List<String> columnsNew = DBUtils.GetColumns(db, TableName);
И я должен получить пересечение их. Существует ли быстрый способ достигнуть этого?
Вы можете использовать retainAll
method:
columnsOld.retainAll (columnsNew);
Поскольку keepAll не затрагивает коллекцию аргументов, это будет быстрее:
List<String> columnsOld = DBUtils.GetColumns(db, TableName);
List<String> columnsNew = DBUtils.GetColumns(db, TableName);
for(int i = columnsNew.size() - 1; i > -1; --i){
String str = columnsNew.get(i);
if(!columnsOld.remove(str))
columnsNew.remove(str);
}
Пересечением будут значения, оставшиеся в columnsNew. Удаление уже сравниваемых значений из columnsOld уменьшит количество необходимых сравнений.