Java의 필터 목록

Sheeraz Gul 2023년10월12일
  1. Java 7 이상을 사용하여 목록 필터링
  2. Java 8을 사용하여 목록 필터링
  3. Google Guava를 사용하여 목록 필터링
  4. Apache Commons를 사용하여 목록 필터링
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);
  }
}

위의 코드는 forif를 사용하여 주어진 목록에서 문자 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에서 목록을 필터링하는 데 사용할 수 있는 IterableFluentIterable이 포함되어 있습니다. 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 Gul
Sheeraz Gul avatar Sheeraz Gul avatar

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

관련 문장 - Java List