我在找到地图中列表中某个属性的所有可能组合时遇到了一些麻烦。
我的地图如下
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;
}