У меня есть два больших массива строк. Я хочу удалить элементы из первого массива, которые не существуют во втором массиве. Сначала я создать два массива:Java: Как эффективно удалить строки из массива, которые не существуют во втором массиве?
Массив для изменения:
String[] sarr = fdata.split(System.getProperty("line.separator"));
ArrayList<String> items = new ArrayList(Arrays.asList(sarr));
Фильтр массива:
List<String> filter = new ArrayList<String>();
filter = Arrays.asList(voc.split(System.getProperty("line.separator")))
Затем я создаю итератор для перебора элементов items
массива и проверьте, существует ли повторяющийся элемент в массиве filter
, если это так, удалите его с items
:
Iterator<String> it = items.iterator();
while (it.hasNext()) {
String s = it.next();
if (!filter.contains(s)) {
it.remove();
}
}
items
массивы содержит 286,568 строк и filter
содержит 100000 строк. Похоже, что операция занимает слишком много времени, поэтому я не делаю этого эффективно. Есть ли более быстрый способ?
ничего себе, это намного быстрее! – minerals
Это может быть даже немного быстрее, в зависимости от того, что вы пытаетесь добиться; вы также можете использовать 'HashSet' для элементов, если вам не нужен порядок элементов или повторяющиеся значения. – Elist
@minerals Важно, чтобы вы узнали о базовых структурах данных, чтобы понять, почему они эффективнее – Dici