2016-04-19 12 views
-1

私は1つのオブジェクトと2つの条件を持ち、それをリストに変換する必要があります。Java 8で既存のコードを書き直すLambda

  • SelectItemの検索結果を期待する問題
  • 鋳造getLabelgetValue
  • を持っている - >従業員のリスト
  • オブジェクト(例: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>オブジェクトは、クラスが取得したentity.class内のfirm.classを参照します。 'と'プライベートStringコード。 ' – Ryan

+1

Stack Overflowは「私のためのコードを書いてください」サービスではないため、この質問をトピックとしてクローズしています。 – 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はStringで、 'getValue()' - > typeはObjectです。 getValueはEmployees.howで最初にキャストしてJava 8内でキャストし、map(map(e-> e.getValue()) .collect(Collectors.toList());)にする必要がありますか? – Ryan

+0

新しいSelectItem(オブジェクト値、文字列ラベル) – Ryan

+0

キャストはJava 8より前に実行されます。キャストするコードを更新しました。 – 11thdimension

関連する問題