2010-07-21 2 views
2

У меня есть список значений заголовков из таблицы Excel, которая настроена так, чтобы выглядеть как плоская таблица. У меня также есть список, определяющий ключевые поля таблицы, в которые будет вставлен лист excel. Я в основном хочу итерации по списку полей заголовка, и заголовок существует в списке ключевых полей, добавьте его в какую-то карту. Каков наилучший способ проверить, существуют ли значения в одном списке в другом?Проверьте, существует ли элемент одного списка в другом списке

+1

Что это связано с Java или математикой? :-) – corsiKa

+0

К сожалению, язык java. И математика была случайностью. –

ответ

2

Я считаю, превращая ваш список ключей в Set объекта даст вам функциональность, которую вы ищете.


Set<String> keys = new HashSet<String>(listOKeys); 

for (String header : listOHeaders) { 
    if (keys.contains(header)) { 
     // process 
    } 
} 
+0

В списке есть метод contains, хотя использование HashSet, скорее всего, будет Быстрее. –

+0

@Andrei: Yup, O (n) для List vs O (lg n) для HashSet, если я не понимаю что-то. Тривиальное различие для небольших наборов данных, но неэффективность по эффективности редко бывает плохой. – BlairHippo

1
List myList = //... 
List another = //... 
myList.retainAll(another); 
+0

Мне нужно только проверить, существуют ли значения. Если заголовок находится в списке ключевых полей, я продолжу добавлять этот заголовок вместе с его значением строки к карте. Если я не ошибаюсь, у KeepAll будут просто отсутствовать какие-либо значения, не входящие в список ключей, предоставляя мне клон списка ключей, который у меня уже есть. –

Смежные вопросы