2017-07-12 9 views
2

私の英語は申し訳ありません。私は正規表現を使用してList<Contact>を名前でフィルタリングし、新しいものを得る必要があります。List<Contact>ここでnameは正規表現と一致します。連絡先には名前とIDの2つのフィールドがあります。例えばパラメータが正規表現である場合、どのようにリクエストからデータを取得できますか?

たぶん、このような何かが、私は名前を選択し、正規表現と比較してどのように行うのか分かりません。

どうすればいいですか?

+1

具体例については、私は思います、「Bで始まらない連絡先を返します」連絡先が一般的に空でない名前を持っていると仮定して、 '.filter(contact-> contact.getName()。chatAt(0)!= 'B')'を使用してください。 – Holger

答えて

3

List<Contact>の名前でフィルタリングできます。

Pattern pattern = Pattern.compile("..."); 

List<Contact> matched = list.stream() 
    .filter(it -> it!=null && it.getName()!=null && pattern.matcher(it.getName()).matches()) 
    .collect(Collectors.toList()); 

OR例えば、コードをより表現豊かにするために、フィルタ・チェーンを使用した:例えば

List<Contact> matched = list.stream() 
          .filter(Objects::nonNull) 
          .filter(it -> it.getName() != null) 
          .filter(it -> pattern.matcher(it.getName()).matches()) 
          .collect(Collectors.toList()); 
+0

私はモバイルで、 :)。 –

+0

私はそれを使用すればリストを得ることができますが、リストは得られません。 –

+0

@alexsafsafsdごめんなさい。私はモバイルです。今はいかがですか? –

関連する問題