找到未知数量的列表中的所有组合

时间:2017-03-21 17:58:40

标签: java list hashmap

我在找到地图中列表中某个属性的所有可能组合时遇到了一些麻烦。

我的地图如下

    Map<Integer, List<Resource>> details = new HashMap<>();

和资源类如下

public class Resource {
private int resourceId;
private int resourceTypeId;
private String code;
private String name;
private double pricePerPackage;
private int companyId;
private String packageName;

//With getters and setters which I haven't copied here

}

地图的关键字是resourceTypeId,即我已经在列表中分组了相同resourceTypeId的资源列表。

现在我想做的是在不同的列表中获得pricePerPackage的所有可能组合。列表数量未知。 如何开发逻辑呢?

修改

例如地图可能如下

使用键1列表

[com.eventsia.util.domain.Resource@71dac704,com.eventsia.util.domain.Resource@2d363fb3]

使用键2列表

[com.eventsia.util.domain.Resource@7d6f77cc,com.eventsia.util.domain.Resource@5aaa6d82,com.eventsia.util.domain.Resource@6f75e721]

1 ==&gt; 1,1,“A”,“ABC”,20.0,3,“Abcd”

1 ==&gt; 2,1,“B”,“BCD”,40.0,5,“lloo”

2 ==&gt; 3,2,“F”“Foo”,60.0,3,“Foo”

2 ==&gt; 4,2,“G”“Goo”,50.0,4,“Goo”

2 ==&gt; 5,2,“B”“Boo”,65.0,3,“Boo”

我想要所有可以得到的总数

20 + 60

20 + 40

20 + 65

40 + 60

40 + 40

40 + 65

并且......我的列表数量未知

这是我尝试的但却错了,我无法弄清楚如何纠正它

        Map<Integer, List<Resource>> details = new HashMap<>(); //say I Have data in it

add(details, 0, 0);
public double add(Map<Integer, List<Resource>> details,int key,double amt){

    for (int key1 : details.keySet()) {
        if(key1==key)
            break;
        List<Resource> list1 = details.get(key1);
        for (Resource resource1 : list1) {
            amt+=resource1.getPricePerPackage();
            add(details, key1,amt);
        }
        System.out.println(amt);
    }

    return amt;
}

0 个答案:

没有答案