2016-03-19 6 views
1

Java APIにコレクションがあるかどうかを調べています。ここでは、指定されたテキストで始まる要素を取得できます。私は「A」を入力した場合、私は、コレクション正規表現を使用して要素をフィルタリングするJavaコレクション

abc 
abbb 
adf 
abab 
dfg 
cfg 

に次の要素を持っている場合たとえば

、それは文字「A」で始まるすべての要素を返す必要があります。

+0

コレクションAPIにこれを含めるのは意味がありません。これは文字列にのみ適用され、非常に特殊な要件です。これはあなた自身をコード化しなければならないことのようなものです。 – RealSkeptic

答えて

2

あなたは、単純なパイプラインを行うことができますが、ボックスアウトが、あなたにこのフィルタリングを与えることができます何のコレクションがありません(Javaの8必要):

フィルタリングを許可するサードパーティのライブラリがあります
filteredList = collection.stream() 
         .filter(e -> e.startsWith("a")) 
         .collect(Collectors.toList()); 

コレクションも同様:

リンクされたJavadocの記述は、各メソッドがどのようにフィルタリングを行うか(つまり、指定されたコレクションを変更するか、新しいコレクションを返すか)を正確に説明します。


それとも単にforループ(および前)を使用して:あなたは正規表現を必要としない

List<String> filteredList = new ArrayList<String>(); 
for(Iterator<String> iterator = collection.iterator(); iterator.hasNext();) { 
    String str = iterator.next(); 
    if(str.startsWith("a")) { 
     filteredList.add(str); 
    } 
} 
+2

@ AR_3、答えをありがとう、この機能は、あなたが提案しているJava 1.8で利用可能です、Java 1.6を使用して簡単にそれを行うには方法です – KItis

3

を。 pre Java 8:

Collection<String> strings; // given this 
String filter = "a"; 
for (Iterator<String> i = strings.iterator(); i.hasNext();) 
    if (i.next().startsWith(filter)) 
     i.remove(); 
関連する問題