Java のフィルタ リスト
- Java 7 以降を使用してリストをフィルタリングする
- Java 8 を使用してリストをフィルタリングする
- Google Guava を使用してリストをフィルタリングする
- Apache Commons を使用してリストをフィルタリングする
Java での作業中は、リストのフィルタリングが必要になることがよくあります。 Java でリストをフィルタリングするいくつかの方法では、コア Java とさまざまなライブラリを使用します。
このチュートリアルでは、Java でリストをフィルタリングする方法を示します。
Java 7 以降を使用してリストをフィルタリングする
Java 7 およびそれ以前のバージョンを使用してリストを反復処理し、Java でリストをフィルタリングできます。
for
ループを使用する
1つの方法は、for
ループと条件ステートメントを使用することです。 例を見てみましょう:
package delftstack;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> Demo_List = Arrays.asList("Jack", "Shawn", "Jhon", "Michelle", "Joey");
// Using Java 7 and before:
// empty list
List<String> Filtered_List = new ArrayList<>();
// iterate through the list
for (String Demo_Entry : Demo_List) {
// filter values that start with `B`
if (Demo_Entry.startsWith("J")) {
Filtered_List.add(Demo_Entry);
}
}
System.out.println(Filtered_List);
}
}
上記のコードは、for
と if
を使用して、与えられたリストから文字 J
で名前をフィルタリングします。 出力を参照してください:
[Jack, Jhon, Joey]
remove()
メソッドを使用する
もう 1つの方法は、Iterator
クラスの remove()
メソッドを使用してリストをフィルタリングすることです。 例を見てみましょう:
package delftstack;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> Demo_List =
new ArrayList<>(Arrays.asList("Jack", "Shawn", "Jhon", "Michelle", "Joey"));
// Using Java 7 and before:
// get an iterator to the list
Iterator<String> Demo_Iterator = Demo_List.iterator();
// iterate through the list
while (Demo_Iterator.hasNext()) {
String Demo = Demo_Iterator.next();
// filter values that start with `B`
if (!Demo.startsWith("J")) {
Demo_Iterator.remove();
}
}
System.out.println(Demo_List);
}
}
このコードは、remove()
メソッドと while
ループで Iterator
を使用して、指定されたリストから文字 J
を含む名前をフィルタリングします。 出力を参照してください:
[Jack, Jhon, Joey]
Java 8 を使用してリストをフィルタリングする
Java 8 でリストをフィルタリングするには、リストをストリームに変換してからフィルタリングする方法を使用できます。 これは、Java 8 でリストをフィルタリングするための推奨される方法です。
例を参照してください。
package delftstack;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Example {
public static void main(String[] args) {
List<String> Demo_List =
new ArrayList<>(Arrays.asList("Jack", "Shawn", "Jhon", "Michelle", "Joey"));
// Using Java 8 and above:
String Filtered_List = Demo_List.stream()
.filter(entry -> entry.startsWith("J"))
.collect(Collectors.joining(", ", "[", "]"));
System.out.println(Filtered_List);
}
}
上記のコードは、stream()
を使用して、文字 J
を含む名前のリストをフィルタリングします。 出力を参照してください:
[Jack, Jhon, Joey]
ご覧のとおり、上記のコードは出力でリストを文字列に変換します。 Stream
を使用して、出力をリストに変換することもできます。
例を参照してください。
package delftstack;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Example {
public static void main(String[] args) {
List<String> Demo_List =
new ArrayList<>(Arrays.asList("Jack", "Shawn", "Jhon", "Michelle", "Joey"));
// Using Java 8 and above:
List<String> Filtered_List =
Demo_List.stream().filter(entry -> entry.startsWith("J")).collect(Collectors.toList());
System.out.println(Filtered_List);
}
}
上記のコードは、フィルタリングされたリスト出力をリストに変換します。 出力を参照してください:
[Jack, Jhon, Joey]
Google Guava を使用してリストをフィルタリングする
Guava
ライブラリには、Java でリストをフィルタリングするために使用できる Iterable
と FluentIterable
が含まれています。 Iterable
クラスには、リストをフィルタリングする filter()
メソッドが含まれています。
Guava
ライブラリは、次の依存関係を Maven プロジェクトに追加することで使用できます。
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>19.0</version>
</dependency>
それでは、Google Guava ライブラリの Iterable
を使用して例を試してみましょう。
package delftstack;
import com.google.common.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Example {
public static void main(String[] args) {
List<String> Demo_List =
new ArrayList<>(Arrays.asList("Jack", "Shawn", "Jhon", "Michelle", "Joey"));
Iterable<String> Filtered_Iterable =
Iterables.filter(Demo_List, new com.google.common.base.Predicate<String>() {
@Override
public boolean apply(String s) {
return s.startsWith("J");
}
});
List<String> Filtered_List = Lists.newArrayList(Filtered_Iterable);
System.out.println(Filtered_List);
}
}
このコードは、J
という文字で始まる名前で指定されたリストをフィルタリングします。 出力を参照してください:
[Jack, Jhon, Joey]
FluentIterable
を使った例を試してみましょう:
package delftstack;
import com.google.common.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Example {
public static void main(String[] args) {
List<String> Demo_List =
new ArrayList<>(Arrays.asList("Jack", "Shawn", "Jhon", "Michelle", "Joey"));
List<String> Filtered_List = FluentIterable.from(Demo_List)
.filter(new com.google.common.base.Predicate<String>() {
@Override
public boolean apply(String s) {
return s.startsWith("J");
}
})
.toList();
System.out.println(Filtered_List);
}
}
上記のコードは、Google Guava ライブラリの FluentIterable
を使用して、文字 J
で始まるリストから名前をフィルタリングします。 出力を参照してください:
[Jack, Jhon, Joey]
Apache Commons を使用してリストをフィルタリングする
Apache Commons は、リストをフィルタリングするために使用できるクラス CollectionUtils
を提供します。 Apache Commons を使用するには、次の依存関係を Maven プロジェクトに追加します。
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
それでは、CollectionUtils
を使用してリストをフィルタリングする例を試してみましょう。
package delftstack;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.collections.CollectionUtils;
public class Example {
public static void main(String[] args) {
List<String> Demo_List =
new ArrayList<>(Arrays.asList("Jack", "Shawn", "Jhon", "Michelle", "Joey"));
List<String> Filtered_List = new ArrayList<>(Demo_List);
CollectionUtils.filter(Filtered_List, new Predicate<String>() {
@Override
public boolean evaluate(String s) {
return s.startsWith("J");
}
});
System.out.println(Filtered_List);
}
}
上記のコードは、CollectionUtils
メソッドを使用して、文字 J
で始まる名前のリストをフィルタリングします。 出力を参照してください:
[Jack, Jhon, Joey]
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook