按java的特定属性筛选对象
所以我有一节课:按java的特定属性筛选对象,java,arraylist,java-stream,Java,Arraylist,Java Stream,所以我有一节课: 公务舱座位{ 私人长id; 私有浮动位置X; 私人浮动头寸; 私人座位; 私有字符串标签; //接球手和接球手 } 我有座位的列表: List seatList=//从存储库获取数据; 我还有一个arraylist包含ID列表: List idList;//例如:[1,2,3] 我想筛选seatList,以便筛选的ArrayList不包含id来自idList的Seat对象,因此我尝试使用流: List filteredSeat=seatList.stream() .过滤器
公务舱座位{
私人长id;
私有浮动位置X;
私人浮动头寸;
私人座位;
私有字符串标签;
//接球手和接球手
}
我有座位的列表
:
List seatList=//从存储库获取数据;
我还有一个arraylist
包含ID列表:
List idList;//例如:[1,2,3]
我想筛选seatList
,以便筛选的ArrayList
不包含id来自idList
的Seat
对象,因此我尝试使用流:
List filteredSeat=seatList.stream()
.过滤器(座椅->{
//函数筛选seat.getId(),以便返回id不等于idList中id的seat对象
})
.collect(Collectors.toList());
我找不到正确的函数来做这件事。有人建议我试试吗?您想使用中的重写方法,否定表示在列表中找不到id
Set<Seat> filteredSeat = seatList.stream()
.filter(seat -> !idList.contains(seat.getId()))
.collect(Collectors.toSet());
Set filteredSeat=seatList.stream()
.filter(seat->!idList.contains(seat.getId()))
.collect(收集器.toSet());
几点注意:
- 您希望使用
Set
而不是List
进行有效的查找。此外,ID之间存在重复值是没有意义的,因此Set
是一个不错的选择
Collectors.toSet()
resultsSet
,因此流的返回类型为Set
您想使用来自的重写方法,否定意味着列表中找不到id
Set<Seat> filteredSeat = seatList.stream()
.filter(seat -> !idList.contains(seat.getId()))
.collect(Collectors.toSet());
Set filteredSeat=seatList.stream()
.filter(seat->!idList.contains(seat.getId()))
.collect(收集器.toSet());
几点注意:
- 您希望使用
Set
而不是List
进行有效的查找。此外,ID之间存在重复值是没有意义的,因此Set
是一个不错的选择
Collectors.toSet()
resultsSet
,因此流的返回类型为Set
最简单的解决方案是一个for-each循环,在该循环中,您根据座椅id检查每个怠速
也许像
List<Seat> FilteredList;
for ( Seat CurSeat : seatList ){
for(int i = 0; i < idList.size(); i++){
列表过滤器列表;
用于(座椅光标:座椅列表){
for(int i=0;i
如果CurSeat的ID是idList的一部分,则不会将其添加到新列表中。
这肯定不是最简单的方法,但如果你想找一件容易的事情,这可能就是。
希望这能有所帮助!最简单的解决方案是一个for-each循环,在该循环中,您根据座椅id检查每个怠速
也许像
List<Seat> FilteredList;
for ( Seat CurSeat : seatList ){
for(int i = 0; i < idList.size(); i++){
列表过滤器列表;
用于(座椅光标:座椅列表){
for(int i=0;i
如果CurSeat的ID是idList的一部分,则不会将其添加到新列表中。
这肯定不是最简单的方法,但如果你想找一件容易的事情,这可能就是。
希望这有帮助!假设您相应地实现了equals
方法(如前面提到的),那么有一个更短的解决方案:
seatList.stream()
.distinct()
.collect( Collectors.toList() );
假设您相应地实现了equals
方法(就像前面提到的那样),那么有一个更短的解决方案:
seatList.stream()
.distinct()
.collect( Collectors.toList() );