HOWTO · Java
Java의 필터 목록
이 자습서는 Java에서 목록을 필터링하는 방법을 보여줍니다.
목록 필터링은 Java에서 작업하는 동안 자주 필요합니다. Java에서 목록을 필터링하는 여러 방법은 핵심 Java 및 다른 라이브러리를 사용합니다.
이 자습서는 Java에서 목록을 필터링하는 방법을 보여줍니다.
Java 7 이상을 사용하여 목록 필터링
Java 7 및 이전 버전을 사용하여 목록을 반복하여 Java에서 목록을 필터링할 수 있습니다.
for 루프 사용
한 가지 방법은 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() 메서드 사용
또 다른 방법은 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]