ArrayList获取对象属性的所有值

 吴钧隆362 发布于 2023-02-13 10:15

假设我有一个User对象的ArrayList ArrayList.User对象具有属性userID.

是不是自己迭代列表并将userID添加到单独的列表中,是否有API调用,我可以在其中传递我想要的属性,并将这些属性的列表返回给我?看看API并没有什么突出的.

在Java 7或<中寻找解决方案.

1 个回答
  • 您可以使用lambdas表达式(Java 8)执行此操作:

    import java.util.*;
    import java.util.function.*;
    import java.util.stream.*;
    
    public class Test {
      public static void main(String args[]){
        List<User> users = Arrays.asList(new User(1,"Alice"), new User(2,"Bob"), new User(3,"Charlie"), new User(4,"Dave"));
        List<Long> listUsersId = users.stream()
                                      .map(u -> u.id)
                                      .collect(Collectors.toList());
        System.out.println(listUsersId);
      }
    }
    
    class User {
      public long id;
      public String name;
    
      public User(long id, String name){
        this.id = id;
        this.name = name;
      }
    }
    

    输出:

    [1, 2, 3, 4]
    

    这里的代码片段.


    使用反射的最丑的解决方案:

    public class Test {
        public static void main (String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
             List<User> users = Arrays.asList(new User(1,"Alice"), new User(2,"Bob"), new User(3,"Charlie"), new User(4,"Dave"));
             List<Object> list = get(users,"id");
             System.out.println(list);
        }
    
        public static List<Object> get(List<User> l, String fieldName) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
            Field field = User.class.getDeclaredField(fieldName);
            field.setAccessible(true);
            List<Object> list = new ArrayList<>();
            for(User u : l){
                list.add(field.get(u));
            }
            field.setAccessible(false);
            return list;
        }
    }
    class User {
          private long id;
          private String name;
    
          public User(long id, String name){
            this.id = id;
            this.name = name;
          }
    }
    

    输出:

    [1, 2, 3, 4]
    

    2023-02-13 10:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有