Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在未知数量的列表中查找所有组合_Java_List_Hashmap - Fatal编程技术网

Java 在未知数量的列表中查找所有组合

Java 在未知数量的列表中查找所有组合,java,list,hashmap,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 p

在地图中的列表中查找某个属性的所有可能组合时遇到了一些问题

我的地图如下

    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组合。列表的数量未知。 我如何制定这样做的逻辑

编辑

例如,地图可能如下所示

    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
用键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==>1,1,“A”,“ABC”,20.0,3,“Abcd”

1==>2,1,“B”,“BCD”,40.0,5,“lloo”

2==>3,2,“F”“Foo”,60.0,3,“Foo”

2==>4,2,“G”“Goo”,50.0,4,“Goo”

2==>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;
}
Map details=newhashmap()//假设我有数据在里面
添加(详细信息,0,0);
公共双添加(地图详细信息、整数键、双金额){
for(int key1:details.keySet()){
如果(键1==键)
打破
List list1=details.get(key1);
for(资源1:list1){
amt+=resource1.getPricePerPackage();
添加(详细信息,键1,金额);
}
系统输出打印项次(金额);
}
返回金额;
}

是什么阻止您迭代所有地图条目;然后迭代每个列表以查找那些pricePerPackage?顺便说一句:你从来没有用浮点数来表示真正的货币。我不太明白。是否通过从每个列表的一个成员中选择
pricePerPackage
属性来形成一个“不同列表中的pricePerPackage的组合[]”?如果是,每个这样的组合是否有序和/或元素是否与映射键关联?在任何情况下,您卡在哪里?如何实施选择?如何避免重复?如何表示结果?我想找到每个组合的总价格。假设我在地图上有3个列表。每个列表属于不同的资源类型。因此,我想将第一个列表中的价格与所有其他价格相加,以便找到所有总计。@GhostCat我需要从不同地图条目的不同列表中找到总计,而不是从同一关键字的列表中找到总计