用Java8Lambda重写现有代码

用Java8Lambda重写现有代码,java,Java,我有一个对象,两个条件,需要将其转换为一个列表 SelectItem具有getLabel和getValue 铸造问题 预期结果->员工名单 对象引用类(例如:Employees.class) 代码如下所示: public static final List<Employees> onFilterObjectFromSelectItems(final String query,final List<SelectItem> selectItemList) { fina

我有一个对象,两个条件,需要将其转换为一个列表

  • 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;
}
FilterObjectFromSelectItems上的公共静态最终列表(最终字符串查询,最终列表selectItemList){
最终列表结果=新建ArrayList();
对于(SelectItem sl:selectItemList){
雇员x=(雇员)sl.getValue();
if(x.getCode.contains(查询)| | x.getName.contains(查询)){
结果:添加(x);
}
}
返回结果;
}
尝试以下代码

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

对象类型没有getCode和getName()方法。另外,我建议阅读java中的泛型并在这里使用它们。exmaple>对象引用firm.class,在类中获取实体“private String name;”和“私有字符串代码;”我投票以离题的方式结束这个问题,因为堆栈溢出不是“为我重新编写代码”服务。@BalusC:我同意可以用更好的措辞,但我不认为有人说“我知道如何用Java 8之前的方式来做这件事,但需要帮助将我的代码转换为使用streams/lambdas”有什么错。Ryan,我建议您编辑您的问题并使其更清楚。Ryan:如果您显示您的尝试并说出确切的错误,堆栈溢出会更有效。仅供参考,SelectItem(List selectItemList)是类,并且具有“getLabel()”->type是字符串,“getValue()”->type是对象。getValue需要首先与员工强制转换。如何在java 8内部强制转换并使其映射(映射(e->e.getValue()).collect(Collectors.toList());)?新的SelectItem(对象值、字符串标签)强制转换将像在java 8之前一样完成。我已经更新了铸造代码。