试图获得最低整数
所以我有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));
以下是我如何满足您的要求:
-
定义一个Multimap ,它将存储
list.size
值并将其映射到标签Set
(或列表,取决于您感兴趣的内容 – 不是100%明确的问题)。 因此,在您的情况下,multimap将存储以下内容:2 -> Set("Diamond", "Emerald")
3 -> Set("Gold")
4 -> Set("Iron")
-
查找所有多地图密钥的最低值。
-
获取最低值的标签集。
-
随机选择一个标签。
第一次需要确定列表大小并将它们放在地图中。 之后,您可以按值对地图进行分组,并将结果设置为另一个地图。 对于此地图,您可以使用计数。 现在,您应将此数字用作随机参数。