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