我如何使用java流以相同的性能过滤一个对象?
HashSettasks
包含:
task=1, name=hello
task=2, name=hello
现在,我要筛选任务
来生成一个新的哈希集
,它具有唯一的name
-属性。
所有具有相同名称的对象都应被视为平等的对象:
tasks.stream.filter(???);
我可以通过创建一个新的列表并使用2个for循环来解决这个问题,方法是索引下一个元素并查找name
(如果它已经放入列表中)。然而,也许有一个班轮这样的问题?可能使用stream.filter()
?
您可以首先创建一个映射,使用任务名称作为键,使用相关任务作为值。只需使用mergefunction
即可忽略重复任务。然后以set
视图的形式获取所有不同的任务。
Set<Task> distinctTasks = tasks.stream().collect(Collectors.collectingAndThen(
Collectors.toMap(Task::getName, Function.identity(),
(a, b) -> a), m -> new HashSet<>(m.values())));
我想通过作为字符串的属性名筛选类的集合。假设我有一个名为Person的类,我有它的一个集合,或者是IEnumerable或者是List,我想过滤这个集合,但是我不知道确切的过滤器,我的意思是我不能使用: 让我举一个例子。
我还有这个包含ID列表: 我想筛选以便筛选的不包含id来自的对象,因此我尝试使用stream: 我找不到做这件事的正确函数。有人有什么建议让我试试吗?
我需要在序列化时动态过滤bean属性。 不是我的选择。 假设我的Bean(作为Json符号): 我想使用以下属性编写 JSON: 预期的 JSON 结果为: 最后,我将在RestController中创建一个注释(),用于Spring,如下所示:
我正在寻找一个干净的方式来完成这一点使用Es6,所以扩展操作符对我可用。
问题内容: 基本上,我有一个表,其中的字段标识创建消息的用户。 当我显示两个用户之间的对话(一组消息)时,我希望能够通过来对消息进行分组,但要采用一种棘手的方式: 假设有一些消息(按排序): 我想按以下顺序获得3个消息组: 它应该按 user_id 分组,直到看到一个不同的分组,然后再按该分组。 我正在使用PostgreSQL,并且很乐意使用特定于它的东西,无论哪种都能提供最佳性能。 问题答案:
我想过滤熊猫DataFrame,它从DataFrame中过滤掉除值中声明的行之外的所有其他列。我如何才能做到这一点并获得预期输出。 预期输出: