Java判断List集合中的对象是否包含有某一元素
关于以下方法,直接可以在自己项目创建一个类,然后进行测试使用!文本末尾也提供了每个方法的运行结果,供大家参考使用!
文章大量使用到了Java8当中的Lambda表达式,以及stream流相关基础知识。如果您用的不熟,没关系,可以直接复制下面的方案然后进行套着使用即可,如果想深入了解的,可以看一下这两篇文章:
Lambda讲解: Stream讲解:
@Data @AllArgsConstructor @ToString public class User { @ApiModelProperty("姓名") private String name; @ApiModelProperty("性别") private String gender; @ApiModelProperty("证件类型") private String paperworkType; @ApiModelProperty("证件号码") private String identityNumber; }
这里用到了两个函数:
import java.util.*; import java.util.stream.Collectors; public class Test { private static final List<User> userList = Arrays.asList( new User("张三", "男", "身份证", "350781196403077840"), new User("李四", "男", "港澳证", "350781196403077840"), new User("王五", "男", "身份证", "350781196403071166"), new User("赵六", "男", "身份证", "350781196403076629"), new User("赵六", "男", "身份证", "350781196403078202")); private static final List<String> stringList = Arrays.asList("aaa", "bbb", "ccc"); /** * 判断stringList是否包含某个元素 */ public static void method1() { System.out.println(stringList.contains("ccc")); System.out.println(stringList.contains("ddd")); } /** * 判断userList是否包含身份证号为350781196403077840的人 * 方式一:使用正常的for循环 */ public static Boolean method2() { Boolean flag = false; for (User user : userList) { if (user.getIdentityNumber().equals("350781196403077840")) { flag = true; break; } } return flag; } /** * 判断userList是否包含身份证号为350781196403077840的人 * 方式二:使用stream */ public static Boolean method3() { return userList.stream().anyMatch(p -> p.getIdentityNumber().equals("350781196403077840")); } /** * 判断userList是否包含身份证号为350781196403077840的人 * 两个字段作为条件,一个是证件类型,一个是身份证号,来查询是否有存在的值 */ public static Boolean method4() { return userList.stream().anyMatch(p -> p.getIdentityNumber().equals("350781196403077840") && p.getPaperworkType().equals("身份证")); } /** * 返回身份证号为350781196403077840的人的信息,这时候就需要使用filter了 * 两个字段作为条件,一个是证件类型,一个是身份证号,来查询是否有存在的值 */ public static void method5() { List<User> user = userList.stream().filter(p -> p.getIdentityNumber().equals("350781196403077840") && p.getPaperworkType().equals("身份证")).collect(Collectors.toList()); user.forEach(System.out::println); } public static void main(String[] args) { System.out.println("-----------------method1---------------------"); method1(); System.out.println("-----------------method2---------------------"); System.out.println(method2()); System.out.println("-----------------method3---------------------"); System.out.println(method3()); System.out.println("-----------------method4---------------------"); System.out.println(method4()); System.out.println("-----------------method5---------------------"); method5(); } }
输出结果:
下一篇:
玩转Java时间格式转换(亲测可用)