关于使用stream流过滤掉某些数据

前提条件是这样的,我需要将前端用不到的数据去除掉再传给前端,但是我这个萌新对stream流的使用还不太熟练,只了解到可以用filter过滤出需要使用的数据,而不会把这些数据从集合中去除

strings.add("id");
strings.add("delFlag");
strings.add("createTime");
strings.add("updateTime");
strings.add("createBy");
strings.add("updateBy");

List<Field> fieldList =
                Arrays.stream(fields).filter(s -> strings.contains(s.getName())).collect(Collectors.toList());

但是聪明如我,我尝试在lambda里取反!,试了一下居然成功了

!(strings.contains(s.getName()))

具体为什么能这样还没搞明白,但是也算是解决问题了

这个帖子主要还是想抛砖引玉,希望各位大佬不吝赐教,有没有什么更好的解决方法,可以将strings集合中的元素从fields集合中剔除掉,也可以不使用stream,只要能高效稳定的解决问题就行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用stream的filter方法来过滤List<Record>的元素,例如: List<Record> records = new ArrayList<>(); // 添加记录到列表中 Stream<Record> filteredRecords = records.stream().filter(record -> record.getStatus().equals("active")); // 过滤状态为"active"的记录 List<Record> activeRecords = filteredRecords.collect(Collectors.toList()); ### 回答2: 在Java中,可以使用Stream过滤List<Record>的元素。Stream提供了一种简洁、灵活和高效的处理集合数据的方式。 首先,我们需要将List<Record>转换成一个Stream。可以使用List的stream()方法来获取一个Stream对象,该对象代表了List中的元素。 接下来,可以使用filter()方法来对元素进行过滤。filter()方法需要一个Predicate<T>参数,用于指定过滤条件。在这个参数中,我们可以定义一个Lambda表达式来指定过滤条件。 Lambda表达式的参数是中的每个元素,需要根据元素的某些属性或条件来判断是否保留该元素。如果条件满足,则保留该元素;否则,过滤该元素。 最后,可以使用collect()方法将过滤后的元素收集到一个新的List中。collect()方法需要一个Collector参数,我们可以使用Collectors.toList()方法来创建一个收集器,用于将元素收集到新的List中。 下面是一个示例代码,演示如何使用Stream过滤List<Record>的元素: ``` import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Record> records = // 获取记录的方法,省略 List<Record> filteredRecords = records.stream() .filter(record -> record.getProperty() > 10) // 过滤条件,保留属性大于10的记录 .collect(Collectors.toList()); // 打印过滤后的记录 filteredRecords.forEach(System.out::println); } } ``` 在以上示例中,假设List<Record>中的Record类有一个getProperty()方法,用于获取记录的某个属性值。示例代码使用filter()方法过滤了属性大于10的记录,并将过滤后的记录收集到了filteredRecords列表中。最后,我们通过forEach()方法来遍历并打印过滤后的记录。 通过以上方法,可以很方便地使用Stream过滤List<Record>的元素。 ### 回答3: 在Java中,可以使用Stream进行过滤List<Record>的元素。Stream是一种用于处理集合数据的标准化操作的抽象,可以用于对集合进行筛选、排序、映射等操作。 首先,我们需要将List<Record>转换为Stream。可以使用List的stream()方法来获取一个Stream对象,例如: Stream<Record> recordStream = recordList.stream(); 然后,我们可以使用filter()方法对中的元素进行过滤操作。filter()方法接受一个Predicate函数式接口作为参数,该接口用于判断元素是否满足某个条件。例如,我们可以过滤出满足某个条件的Record对象,代码如下: recordStream = recordStream.filter(record -> record.getField().equals("某个条件")); 接下来,我们可以继续对过滤后的进行其他操作,例如对结果进行排序、映射等等。最后,我们可以使用collect()方法将转换回List<Record>类型的对象,代码如下: List<Record> filteredList = recordStream.collect(Collectors.toList()); 通过以上的Stream操作,我们可以简洁地过滤List<Record>的元素,并得到满足条件的Record对象的列表。注意,Stream操作是惰性求值的,只有在执行终止操作(如collect()方法)时才会进行计算和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值