2016-04-19 5 views
-1

У меня есть один объект, два условия и его нужно преобразовать в список.Переписать существующий код с Java 8 Lambda

  • SelectItem имеет getLabel и getValue
  • проблемы литья
  • Ожидать Результат -> Список сотрудников
  • объекта относятся к классу (Пример: Employees.class)

Код выглядит :

public static final List<Employees> onFilterObjectFromSelectItems(final String query,final List<SelectItem> selectItemList) { 
    final List <Employees>result = new ArrayList<>(); 
    for (SelectItem sl : selectItemList) { 
    Employees x = (Employees) sl.getValue(); 
    if (x.getCode.contains(query) || x.getName.contains(query)) { 
     result.add(x); 
    } 
    } 
    return result; 
} 
+0

Тип объекта не имеет методов getCode и getName(). Кроме того, я предлагаю прочитать о дженериках в java и использовать их здесь. – Roman

+0

exmaple> объект ссылается на firm.class, в классе получилось личное имя строки сущности; 'и' частный строковый код; ' – Ryan

+1

Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, потому что Stack Overflow не является "(re) писать код для меня". – BalusC

ответ

0

Попробуйте следующий код.

List<Employees> EmployeeList = selectItemList.stream() 
    .filter(x-> x.getCode().contains(query) || x.getName().contains(query)) 
    .map(e->(Employees)e.getValue()) 
    .collect(Collectors.toList()); 
+0

FYI, SelectItem (Список selectItemList) является классом и имеет 'getLabel()' -> type is String и 'getValue()' -> type is Object. getValue необходимо выполнить сначала с Employees.how, чтобы сделать внутри java 8 и сделать его map (map (e-> e.getValue()) .collect (Collectors.toList());)? – Ryan

+0

новый SelectItem (значение объекта, метка строки) – Ryan

+0

Кастинг будет выполнен так же, как это было до Java 8. Я обновил код для кастинга. – 11thdimension

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