我有一个从外部 API 返回的对象列表,每个对象如下所示:
public class Item {
public String id;
public int processingType;
public String appliedToItemId;
public Float chargeAmount;
}
值为 1的对象processingType
需要“应用”到另一个 aprocessingType
为 0 的对象。这些对象与appliedToItemId
和链接id
。将对象分组后,我希望能够将它们合并为一个对象。
这是我可以用 C# 中的 LINQ 做的事情,但想了解 Java 8 中引入的流是否有可能。
C# 会是这样的:
// seperate out items into two lists (processingTypeOneItems, processingTypeTwoItems)
...
// join items
var joinedItems =
from i in processingTypeTwoItems
join j in processingTypeOneItems on i.id equals j.appliedToItemId into gj
from item in gj.DefaultIfEmpty()
select new { id = i.id, chargeAmount = i.chargeAmount, discountAmount = item?.chargeAmount ?? 0 };
可以看出,项目被匹配i.id == j.appliedToItemId
,然后对象被合并为匿名类型的对象。我真的很困惑,因为我看到的大多数示例都只是按一个属性分组。
在 Java 中是否可以以这种自定义方式进行分组,将一个属性的值与另一个属性的值进行比较?