试图获得最低整数

所以我有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然后随机选择其中一个。 总而言之“我想要它所以它会找到最低的int,如果有一个以上的最低int选择它之间的随机。” 我该怎么办? BTW:它并不总是如此,EAmount和DAmount是相同的。 所有这些变量都是完全随机的。

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

首先使用treeset找到最小大小的列表大小

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

迭代map以查找所有最小尺寸的列表(如果有多个)使用上面最小尺寸作为键并仅将它们放入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 set = new TreeSet<>(); set.add(list1.size()); set.add(list2.size()); set.add(list3.size()); set.add(list4.size()); List list = new ArrayList<>(set); int min = list.get(0); System.out.println(min); Map 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 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)); 

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

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

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

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

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

  4. 随机选择一个标签。

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