代码之家  ›  专栏  ›  技术社区  ›  Masterbuilder

用两个参数过滤对象

  •  1
  • Masterbuilder  · 技术社区  · 6 年前

    我有一个包含日期字符串、id和值的用户对象列表。如何筛选用户的ArrayList,它与日期值匹配。

    用户对象是这样的

      String accountId;
      String date;
      String value;
    
      User user = new User();
      user.setAccountId("101");
      user.setDate("20180506");
      user.setValue("David");
    
      ArrayList<User> userList = new ArrayList<User>();
      userList.add(user)
    

    滤器

    我试过这样的东西,但不管用

    userList.stream()
            .filter(c -> userList.contains(date))
            .collect(Collectors.toList());
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   Ousmane D.    6 年前

    您当前的方法不正确,因为您没有使用标识符 c 这代表着 User 对象,然后检查 userList 包含的字符串再次不正确。

    相反 filter 应该是:

    userList.stream()
            .filter(c -> c.getDate().equals(date))
            .collect(Collectors.toList());