2016-11-22 2 views
-3

У меня есть список объектов List<Object>, в которых объекты содержат элементы String. Теперь есть еще один список строк List<String>.Есть ли способ отфильтровать элементы списка, содержащие объект, имеющий элемент String, на основе другого списка String

Я хочу, чтобы первый список содержал только объекты, которые являются элементами второго списка.

Каков наиболее эффективный способ сделать это?

+3

У вас должен быть 'Set' вместо' List' для того, что вы хотите посмотреть. – RealSkeptic

+0

@ Jean-FrançoisCorbett Я делаю это, повторяя списки, которые, по моему мнению, являются самым тривиальным решением. –

ответ

0

Вы можете использовать метод списка , и это удобно в вашем случае, так как оно будет equals() проверить строки.

например.

List<String> otherList = new ArrayList<>(); 
    List<Object> test = new ArrayList<>(); 
    Iterator<Object> it = test.iterator(); 
    while(it.hasNext()){ 
     if(!otherList.contains(it.next().getString())) it.remove(); 
    } 

или Java8 потоков

test.stream().filter(e -> otherList.contains(e.getString())) 
       .collect(Collectors.toList()); 

Это создаст вам новый List.

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