【发布时间】:2014-11-29 00:39:02
【问题描述】:
这就是我的Test 的样子:
@Test
public void testFunctional()
{
final Member member = new Member("email", "memberExternalId", "clientId", "clientSecret");
final Category foodCategory = new Category("Groceries", "Food");
final Category utilityCategory = new Category("Internet", "utility");
final List<Transaction> transactions = new ArrayList<>();
{
transactions.add(new Transaction("food1", new BigDecimal("10.00"), true, LocalDateTime.now(), member, foodCategory));
transactions.add(new Transaction("food2", new BigDecimal("20.00"), true, LocalDateTime.now(), member, foodCategory));
}
{
transactions.add(new Transaction("utility1", new BigDecimal("100.00"), true, LocalDateTime.now(), member, utilityCategory));
transactions.add(new Transaction("utility2", new BigDecimal("200.00"), true, LocalDateTime.now(), member, utilityCategory));
}
final Map<String, List<BigDecimal>> groupByCategory = transactions.stream().collect(Collectors.groupingBy(Category::getGroupName));
}
Category 看起来像这样:
public class Category
{
@Id
private String id;
@Column(nullable = false)
private String name;
@Column(name = "group_name", nullable = false)
private String groupName;
@Column(name = "created_at")
private LocalDateTime createdAt;
...
}
当我这样做时:
final Map<String, List<BigDecimal>> groupByCategory = transactions.stream().collect(Collectors.groupingBy(Category::getGroupName));
IntelliJ 向 Cyclic Inference 投诉
我是第一次尝试这个Java 8 功能,但不确定是什么原因造成的。
【问题讨论】:
-
您的
transactions列表包含Transaction值。您希望在哪里应用Category::getGroupName? -
不确定你的意思,但每个
Transaction都有Category,其中有groupName,我想根据他们的groupName对事务进行分组。这有意义吗? -
所以您希望
Transactions 按其Category的名称分组? -
按
groupName的Category分组。如果你在上面的代码中看到Category有groupName -
IDE 可能会报告误导性错误消息。您需要问自己的第一件事是:“Java 如何使用
Category::getGroupName给定Transaction类型的值(由stream()提供)?”
标签: java intellij-idea java-8