试图获得最低整数

时间:2014-04-27 09:04:36

标签: java

所以我有4个清单, 我想找出哪个list.size();是最低的。 我可以找到最低但有些结果是相同的,这是 我有什么。

              if(EAmount < DAmount && EAmount < GAmount && EAmount < IAmount){
        FinalDecision = "Emerald";
    }else if(DAmount < EAmount && DAmount < GAmount && DAmount < IAmount){
        FinalDecision = "Diamond";
    }else if(GAmount < EAmount && GAmount < DAmount && GAmount < IAmount){
        FinalDecision = "Gold";
    }else if(IAmount < EAmount && IAmount < DAmount && IAmount < GAmount){
        FinalDecision = "Iron";
    }

虽然我需要它来检查最低,然后选择这两者之间的随机情况。例如,如果EAmount和DAmount都是2,但是Gold和Iron都是3和4.我想要它,因此它发现EAmount和DAmount都是2然后随机选择其中一个。总而言之&#34;我想要它所以它会找到最低的int,如果有一个以上的最低int选择它之间的随机。&#34;我该怎么做?顺便说一句:它并不总是如此,EAmount和DAmount是相同的。所有这些变量都是完全随机的。

3 个答案:

答案 0 :(得分:1)

以下是我如何满足您的要求:

  1. 定义一个Multimap,它会存储list.size个值并将其映射到Set个标签(或列表,取决于您感兴趣的内容 - 而不是100个从问题中清楚%)。因此,在您的情况下,multimap将存储以下内容:

    2 -> Set("Diamond", "Emerald")
    3 -> Set("Gold")
    4 -> Set("Iron")

  2. 查找所有多地图密钥的最低值。

  3. 获取最低值的标签集。

  4. 随机选择其中一个标签。

答案 1 :(得分:0)

首次需要确定列表大小并将其放入地图中。之后,您可以按值对地图进行分组,并将结果设置为另一个地图。对于此地图,您可以使用计数。现在,您应该将此数字用作随机参数。

答案 2 :(得分:-1)

经过大量的逻辑研究后,我得到了解决方案,它100%工作,我测试了它

首先使用treeset

找到最小尺寸列表的大小

将所有列表及其大小放入地图

迭代地图以找到所有最小尺寸的列表(如果有多个)使用上面最小尺寸作为关键字并将它们放入finallist中

然后拿决赛并使用其大小

取随机数

然后将此随机数传递给最终列表get方法随机获取相应的列表。

List list1 = new ArrayList();
    list1.add(1);
    list1.add(2);
    List list2 = new ArrayList();
    list2.add(1);
    list2.add(2);
    List list3 = new ArrayList();
    list3.add(1);
    list3.add(2);
    list3.add(1);
    List list4 = new ArrayList();
    list4.add(1);
    list4.add(2);
    list4.add(1);
    list4.add(2);


    Set<Integer> set = new TreeSet<>();
    set.add(list1.size());
    set.add(list2.size());
    set.add(list3.size());
    set.add(list4.size());

    List<Integer> list = new ArrayList<>(set);
    int min = list.get(0);
    System.out.println(min);


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

    map.put(list1,list1.size());
    map.put(list2,list2.size());
    map.put(list3,list3.size());
    map.put(list4,list4.size());



    List finalList = new ArrayList<>();

    for (Map.Entry<List, Integer> entry : map.entrySet())
    {
        if(entry.getValue().equals(min)){
            finalList.add(entry.getKey());

        }

    }


    int finalKey = new Random().nextInt(finalList.size());

    System.out.println(finalList.get(finalKey));