欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > Java如何根据对象属性值从对象列表中获取满足条件的对象

Java如何根据对象属性值从对象列表中获取满足条件的对象

2025/4/23 7:14:24 来源:https://blog.csdn.net/oscar999/article/details/139668032  浏览:    关键词:Java如何根据对象属性值从对象列表中获取满足条件的对象

实现方式

在java 中,根据对象属性值从对象列表中获取满足条件的对象,可以使用以下2种方法:

  1. 使用循环遍历
    手动遍历列表。

  2. 使用流(Streams)API
    利用 Java 8 引入的 Streams 来简化代码。

示例

举例来说, User 的类有三个属性, id,name和age, 现在要从一个User的List集合中获取age=20的所有 User。

/*** Copyright (C)  Oscar Chen(XM):* * Date: 2024-06-14* Author: XM*/package com.osxm.je.chp2.collection;public class User {private String id;private String name;private int age;public User(String id, String name, int age) {this.id = id;this.name = name;this.age = age;}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;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
  1. 使用传统的For循环遍历
    @Testpublic void useForLoop() {List<User> userList = new ArrayList<User>();userList.add(new User("001", "刘备", 22));userList.add(new User("002", "关羽", 18));userList.add(new User("003", "张飞", 18));List<User> age20UserList = new ArrayList<User>();for (User user : userList) {if (user.getAge() == 18) {age20UserList.add(user);}}Assertions.assertEquals(2, age20UserList.size());}
  1. 使用流(Streams)API
    @Testpublic void useStream() {List<User> userList = new ArrayList<User>();userList.add(new User("001", "刘备", 22));userList.add(new User("002", "关羽", 18));userList.add(new User("003", "张飞", 18));List<User> age20UserList = userList.stream().filter(user -> user.getAge() == 18).collect(Collectors.toList());Assertions.assertEquals(2, age20UserList.size());}

两种方法的使用场景

  • 循环遍历 方法更适合较简单且容易理解的场景,尤其当你还未熟悉 Streams API 时。
  • 流(Streams)API 更简洁,当数据处理链较复杂时(例如过滤、映射等操作),Stream API 可能会更加高效且易于维护。

触类旁通, Java Stream还可以实现除了过滤之外的其他功能。 关于Stream 的介绍,可以参考:

Java 8 流API(Stream)介绍与示例



版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词