tvalue是我的数组列表,我想使用下面的代码来检索arraylist中的第一个最大值的索引,通过使用以下代码我得到了错误的值,这对我有什么帮助

int index = Colletions.max(tvalue);
 if ((index + 1) > 10) {
     data = data + "Node" + (index + 1);
 } else if ((index + 1) <= 10) {
     data = data + "Node-" + (index + 1) + " + ";
     System.out.println((index + 1));
 }
 }
 Collections.sort(tvalue);
 int in = tvalue.indexOf(tvalue.get(tvalue.size() - 2));
 System.out.println(tvalue.get(tvalue.size() - 2)); {
     if (( in +1) > 10) {
         data = data + "Node-" + (( in +1) - 10) + " + ";
         System.out.println(( in +1) - 10);
     } else if (( in +1) <= 10) {
         data = data + "Node-" + ( in +1) + " + ";
         System.out.println(( in +1));
     }
 }

 int id = tvalue.indexOf(tvalue.get(tvalue.size() - 3));
 System.out.println(tvalue.get(tvalue.size() - 3)); {
     if ((id + 1) > 10) {
         data = data + "Node-" + ((id + 1) - 10) + " + ";
         System.out.println((id + 1) - 10);
     } else if ((id + 1) <= 10) {
         data = data + "Node-" + (id + 1) + " + ";
         System.out.println((id + 1));
     }
 }

最佳答案

您可以在一行中使用流来完成此操作,请参见以下示例。

List<Integer> list = IntStream.range(1000, 2000).boxed().collect(Collectors.toList());
list.stream().sorted((v1,v2)->v2.compareTo(v1)).limit(3).map(v->list.indexOf(v)).forEach(i->System.out.println(i));

关于java - 如何获取数组列表中前三个最大值的索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38887916/

10-12 01:17