Java APIにコレクションがあるかどうかを調べています。ここでは、指定されたテキストで始まる要素を取得できます。私は「A」を入力した場合、私は、コレクション正規表現を使用して要素をフィルタリングするJavaコレクション
abc
abbb
adf
abab
dfg
cfg
に次の要素を持っている場合たとえば
、それは文字「A」で始まるすべての要素を返す必要があります。
Java APIにコレクションがあるかどうかを調べています。ここでは、指定されたテキストで始まる要素を取得できます。私は「A」を入力した場合、私は、コレクション正規表現を使用して要素をフィルタリングするJavaコレクション
abc
abbb
adf
abab
dfg
cfg
に次の要素を持っている場合たとえば
、それは文字「A」で始まるすべての要素を返す必要があります。
あなたは、単純なパイプラインを行うことができますが、ボックスアウトが、あなたにこのフィルタリングを与えることができます何のコレクションがありません(Javaの8必要):
フィルタリングを許可するサードパーティのライブラリがありますfilteredList = collection.stream()
.filter(e -> e.startsWith("a"))
.collect(Collectors.toList());
コレクションも同様:
Collections2#filter
。ColectionUtils#filter
Apache Commons Collectionsから。リンクされたJavadocの記述は、各メソッドがどのようにフィルタリングを行うか(つまり、指定されたコレクションを変更するか、新しいコレクションを返すか)を正確に説明します。
それとも単にfor
ループ(java-7および前)を使用して:あなたは正規表現を必要としない
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);
}
}
@ AR_3、答えをありがとう、この機能は、あなたが提案しているJava 1.8で利用可能です、Java 1.6を使用して簡単にそれを行うには方法です – KItis
を。 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();
コレクションAPIにこれを含めるのは意味がありません。これは文字列にのみ適用され、非常に特殊な要件です。これはあなた自身をコード化しなければならないことのようなものです。 – RealSkeptic