Buring_learn 2023-09-27 22:52 采纳率: 0%
浏览 8

按指定条件查找符合条件的对象(进阶级) 条件可以是字符形式的,如“age>19”,“name=’张三’等。如符合条件的对象不止一个,应返回一个对象数组(ObjectArrayDemo类型的对象)

2、按指定条件查找符合条件的对象(进阶级)
条件可以是字符形式的,如“age>19”,“name=’张三’等。如符合条件的对象不止一个,应返回一个对象数组(ObjectArrayDemo类型的对象)
有什么思路?

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-09-29 12:38
    关注

    该回复引自强大而免费的微信小程序:皆我百晓生。


    要按指定条件查找符合条件的对象,并返回一个对象数组,可以使用 Java 中的反射机制来实现。以下是一个示例代码:

    import java.lang.reflect.Field;
    import java.util.ArrayList;
    import java.util.List;
    
    public class ObjectArrayDemo {
        private String name;
        private int age;
        // 其他属性...
    
        public ObjectArrayDemo() {
        }
    
        public ObjectArrayDemo(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        // 其他方法...
    
        public static ObjectArrayDemo[] findObjectsByCondition(ObjectArrayDemo[] objects, String condition) {
            List<ObjectArrayDemo> resultList = new ArrayList<>();
            try {
                String[] conditionParts = condition.split("=");
                String fieldName = conditionParts[0].trim();
                Object expectedValue = conditionParts[1].trim().replace("'", "");
    
                for (ObjectArrayDemo object : objects) {
                    Class<?> clazz = object.getClass();
                    Field field = clazz.getDeclaredField(fieldName);
                    field.setAccessible(true);
                    Object actualValue = field.get(object);
                    if (expectedValue.equals(actualValue)) {
                        resultList.add(object);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return resultList.toArray(new ObjectArrayDemo[0]);
        }
    
        public static void main(String[] args) {
            ObjectArrayDemo[] objects = new ObjectArrayDemo[3];
            objects[0] = new ObjectArrayDemo("张三", 20);
            objects[1] = new ObjectArrayDemo("李四", 25);
            objects[2] = new ObjectArrayDemo("王五", 20);
    
            String condition = "age=20";
            ObjectArrayDemo[] result = ObjectArrayDemo.findObjectsByCondition(objects, condition);
    
            for (ObjectArrayDemo object : result) {
                System.out.println("Name: " + object.getName() + ", Age: " + object.getAge());
            }
        }
    }
    

    在上述代码中,我们定义了一个 ObjectArrayDemo 类,其中包含了示例中提到的 nameage 两个属性。在 findObjectsByCondition 方法中,我们使用反射获取对象的属性值,并根据给定的条件进行判断。最后,将符合条件的对象添加到一个 List 中,然后将该 List 转换成数组返回。

    main 方法中,我们创建了一个包含三个 ObjectArrayDemo 对象的数组,并调用 findObjectsByCondition 方法来查找年龄等于 20 的对象。最后,我们遍历返回的结果并打印对象的姓名和年龄。

    你可以根据实际需求修改类的属性和方法,以适应其他条件和类型的查询。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月27日

悬赏问题

  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含