【 101 】 자바 의 List 에서 filter 를 사용 하여 특정 조건 에 맞 는 요 소 를 필터 링 합 니 다 List
9246 단어 JAVA
책의 실체 클래스:
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());
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.