我有一个标签列表,它有很少的属性,如标签名,标签类型,标签ID,点击,订阅者,每个标签的视图。tagName和tagType可以对每个tag对象重复,而tagId对每个tag是唯一的。
我想做一个这样的手术:
为了实现这一点,我的代码片段如下所示:
Map<TempClass, List<Tag>> aggregatedMap = tags.stream()
.collect(groupingBy(t -> new TempClass(t.getTagName(), t.getTagType()));
class Tag {
String tagName;
String tagType;
String tagId;
Long clicks;
Long subscribers;
Long views;
}
class TempClass {
String tagName;
String tagType;
}
是否有什么可以做的与收集器在Java或我需要使用的循环来实现这一点?
public List<Tag> tags(List<Tag> input, long limit, Function<TempClass, Long> extractor) {
List<Tag> result =
input
.stream()
.collect(Collectors.toMap(
x -> new TempClass()
.setTagName(x.getTagName())
.setTagType(x.getTagType()),
Function.identity(),
(left, right) -> {
left.setClicks(left.getClicks() + right.getClicks());
left.setSubscribers(left.getSubscribers() + right.getSubscribers());
left.setViews(left.getViews() + right.getViews());
return left;
}
))
.entrySet()
.stream()
.sorted(Map.Entry.comparingByKey(Comparator.comparing(extractor)))
.limit(limit)
.map(Map.Entry::getValue)
.collect(Collectors.toList());
return result;
}
我对tempclass
做了一点更改:
@EqualsAndHashCode(of = {"tagName", "tagType"})
@Getter
@Setter
@Accessors(chain = true)
private static class TempClass {
String tagName;
String tagType;
}
其余的应该相当容易掌握。
我使用带thymeleaf 3的Spring靴 我试着展示一个豆子 在我的控制器里我有 在我的车里 在我的位置 在我的胸腺碎片中 当我试图显示这个片段时,我得到 org.attoparser。ParseException:异常评估SpringEL表达式:“cities.id”由:org.springframework.expression.spel引起。SpelEvaluationExceptio
我有以下列表,里面是另一个列表,然后是字符串列表 <代码>列表 示例 除了执行嵌套循环并最终替换列表之外,还有更好的方法吗?也许有溪流?
假设我有两个类C1和C2,其中C2由C1的构造函数使用: 现在,我有一个C2对象的列表(List list),我想使用从流式传输的C2对象创建的C1的getProperty()上的条件进行流和筛选。 有办法用溪流做到这一点吗? 我想我应该有XXXX,它使用流中的C2对象创建C1对象,并比较其getProperty()(例如,"value". equals(o2.get)) 这有可能吗?
我该怎么做才能使这件事如我所愿?。谢谢 JSON对象示例列表 示例JSON对象: null 忽略不存在json字段的反序列化错误,但问题仍然存在。 示例:对象反序列化器
给定: 我想把所有的车都标出来。将轮胎分为单独的轮胎板。我知道我可以做一个