有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

算法Java中按多个属性对对象进行分组的一般方法

我有一系列物品:

class Item {        
    String type;
    boolean flag;
    int size;
    ...
}

有几种可能的类型(例如“a”、“b”和“c”),因此有几种可能的类型标志值组合(["a" ; false], ["a" ; true"], ["b" ; false],…)。我需要折叠具有相同值组合的项,所以我有collapse方法和这个签名

Item collapse(Collection<Item> items)

我需要的是将输入项列表分成具有相同typeflag值的组

List<Collection<Item>> getGroups(Collection<Item> items) // method I need

这样我就可以把每个小组都搞垮

List<Item> r = getGroups(items).stream().map(Item::collapse).collect(toList());

所以我可以创建一个地图地图或制作一些复合键,但它需要一些样板代码,我希望避免使用这些代码。将来我可以有更多用于分组的属性,所以解决方案不应该硬编码在这两个属性上,而是可以轻松地扩展到新属性

如何才能很好地做到这一点?这个问题有一个众所周知的解决方案吗


共 (0) 个答案