当前位置: 首页 > 知识库问答 >
问题:

按特定属性筛选对象java

陶胤
2023-03-14
public class Seat {
    private Long id;
    private float positionX;
    private float positionY;
    private int numOfSeats;
    private String label;
    //getters and setters
}
List<Seat> seatList = // get data from repository;

我还有这个arraylist包含ID列表:

List<Long> idList; // for example : [1, 2, 3]

我想筛选seatlist以便筛选的arraylist不包含id来自idlistseat对象,因此我尝试使用stream:

List<Seat> filteredSeat = seatList.stream()
   .filter(seat -> {
         // function to filter seat.getId() so it would return the Seat object with id that does not equals to ids from idList
   })
   .collect(Collectors.toList());

我找不到做这件事的正确函数。有人有什么建议让我试试吗?

共有1个答案

宿嘉庆
2023-03-14

您希望使用集合#contains(Object)中的overriden方法,并使用否定表示在列表中找不到ID

Set<Seat> filteredSeat = seatList.stream()
    .filter(seat -> !idList.contains(seat.getId()))
    .collect(Collectors.toSet());

一些注意事项:

  • 您希望使用set 而不是list 进行高效查找。而且,在ID之间有重复的值是没有意义的,因此set是一个不错的选择。
  • collectors.toset()结果set,因此流的返回类型为set
 类似资料:
  • 我正在寻找一个干净的方式来完成这一点使用Es6,所以扩展操作符对我可用。

  • 我的模型里有这些课程。派克 因为我想"子"字段在"地址"模型只显示"子"对象是相关的"父"我写了这段代码到我的forms.py 意见。派克 结果:子字段仅显示与请求的父对象相关的子对象。这正是我想要的。 问题:当我提交我得到这个错误: 位于/manage/add_address/'str'对象的AttributeError没有属性'get' 回溯: 文件"/库/框架/Python.framewor

  • 我想通过作为字符串的属性名筛选类的集合。假设我有一个名为Person的类,我有它的一个集合,或者是IEnumerable或者是List,我想过滤这个集合,但是我不知道确切的过滤器,我的意思是我不能使用: 让我举一个例子。

  • 我需要在序列化时动态过滤bean属性。 不是我的选择。 假设我的Bean(作为Json符号): 我想使用以下属性编写 JSON: 预期的 JSON 结果为: 最后,我将在RestController中创建一个注释(),用于Spring,如下所示:

  • 下表(按对象名称排序)列出了 Microsoft Office 中已有对象添加的属性。对象属性CommandBarButton Mask Picture CommandBars DisableAskAQuestionDropdown DisableCustomizeFileDialog AllowMultiSelect ButtonName DialogType FilterIndex Filte

  • 问题内容: 我有一个JSON: 我试图删除所有以 “ umb_” 开头的属性。这在json.net中可能吗? 输出将是这样的: 使用删除我能够做到,但是不能一次全部完成。 有什么建议吗? 问题答案: 您可以先解析字符串: 更新 或: 更新#2 您可以在子句中指定更多条件: 要么 或任何您需要的。