【 101 】 자바 의 List 에서 filter 를 사용 하여 특정 조건 에 맞 는 요 소 를 필터 링 합 니 다 List

9246 단어 JAVA
실제 개발 에 서 는 목록 에 있 는 요 소 를 특정 조건 에 따라 걸 러 내 새로운 목록 에 넣 어야 합 니 다.본 고 는 이 문 제 를 해결 하 는 방법 을 묘사 하기 위해 몇 가지 예 를 제시 했다.우 리 는 한 책의 List 가 있다 고 가정 하고 그 중에서 id 가 각각 3, 6, 8, 9 인 책 을 찾 아야 한다.본 고 는 두 가지 방법 을 소개 하여 이 일 을 완성 하 였 다.첫 번 째 방법 은 자바 8 이 지원 하 는 lambda 표현 식 을 사용 하 는 것 입 니 다. 코드 는 간결 하지만 자바 8 버 전에 만 사용 할 수 있 습 니 다.두 번 째 방법 은 전통 적 인 방식 을 사용 하여 자바 의 오래된 버 전에 사용 할 수 있 습 니 다.
책의 실체 클래스:
package blog.zhangchao.csdnBlog;

/**
 *  
 * @author zhangchao
 *
 */
public class Book {
    private String id;
    private String name;

    public Book(String id, String name) {
        super();
        this.id = id;
        this.name = name;
    }

    public Book() {
        super();
    }

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

}

방법 1
자바 8 을 사용 하면 lambda 표현 식 을 사용 할 수 있 습 니 다:
package blog.zhangchao.csdnBlog;

import java.util.List;
import java.util.stream.Collectors;
import java.util.ArrayList;

/**
 * java8   ,  lambda   
 * @author zhangchao
 *
 */
public class Test {

    /**
     *         
     * @return
     */
    public static List prepareData() {
        //       ,id  1 10
        List bookList = new ArrayList();
        for (int i = 1; i < 11; i++) {
            bookList.add(new Book(String.valueOf(i), "book"+i));
        }
        return bookList;
    }

    public static void main(String[] args) {
        List bookList = prepareData();

        //        ID
        ArrayList ids = new ArrayList();
        ids.add("3");
        ids.add("6");
        ids.add("8");
        ids.add("9");

        //          
        List result = null;

        //   lambda           result   ,written by zhangchao
        result = bookList.stream()
                .filter((Book b) -> ids.contains(b.getId()))
                .collect(Collectors.toList());

        //       
        if (result != null && !result.isEmpty()) {
            result.forEach((Book b) -> System.out.println(b.getId() + "  " + b.getName()));
        }
    }
}


방법 2
자바 버 전이 8 보다 낮 으 면 아래 ListUtils 도구 클래스 를 사용 할 수 있 습 니 다.
인터페이스 ListUtils Hook, ListUtils 함수 갈고리 입 니 다.
package blog.zhangchao.csdnBlog;

/**
 *    ListUtils        。 
 * @author zhangchao
 *
 */
public interface ListUtilsHook {
    public boolean test(T t);
}

ListUtils:
package blog.zhangchao.csdnBlog;

import java.util.ArrayList;
import java.util.List;

/**
 *    java8     ,      java   lambda   
 * @author zhangchao
 *
 */
public final class ListUtils {
    public static  List filter(List list, ListUtilsHook hook) {
        ArrayList r = new ArrayList();
        for (T t : list) {
            if (hook.test(t)) {
                r.add(t);
            }
        }
        r.trimToSize();
        return r;
    }
}

사용 방법:
package blog.zhangchao.csdnBlog;

import java.util.ArrayList;
import java.util.List;

/**
 *    java8      ,       
 * @author zhangchao
 *
 */
public class Test2 {

    /**
     *         
     * @return
     */
    public static List prepareData() {
        //       ,id  1 10
        List bookList = new ArrayList();
        for (int i = 1; i < 11; i++) {
            bookList.add(new Book(String.valueOf(i), "book"+i));
        }
        return bookList;
    }

    public static void main(String[] args) {
        List bookList = prepareData();

        //        ID
        ArrayList ids = new ArrayList();
        ids.add("3");
        ids.add("6");
        ids.add("8");
        ids.add("9");

        //          
        List result = null;

        result = ListUtils.filter(bookList, new ListUtilsHook(){
            @Override
            public boolean test(Book b) {
                return ids.contains(b.getId());
            }
        });

        //       
        if (result != null && !result.isEmpty()) {
            for (Book b : result) {
                System.out.println(b.getId() + "  " + b.getName());
            }
        }
    }

}

좋은 웹페이지 즐겨찾기