Java 在ArrayList中查找最大值(可能有多个最大值)

Java 在ArrayList中查找最大值(可能有多个最大值),java,arraylist,Java,Arraylist,我想在ArrayList中找到保存最大值的索引。我想保持数字的顺序,换句话说,不排序,因为我想跟踪什么索引有什么值。这些值来自随机数生成器,并且可能有两个或多个索引共享相同的最大值 示例ArrayList: 12,78,45,78 溶液中的0,1,2,3 public static List<Integer> maxIndices(List<Integer> l) { List<Integer> result = new ArrayLis

我想在ArrayList中找到保存最大值的索引。我想保持数字的顺序,换句话说,不排序,因为我想跟踪什么索引有什么值。这些值来自随机数生成器,并且可能有两个或多个索引共享相同的最大值

示例ArrayList:

12,78,45,78

溶液中的0,1,2,3

   public static List<Integer> maxIndices(List<Integer> l) {
        List<Integer> result = new ArrayList<Integer>();
        Integer candidate = l.get(0);
        result.add(0);

        for (int i = 1; i < l.size(); i++) {
            if (l.get(i).compareTo(candidate) > 0) {
                candidate = l.get(i);
                result.clear();
                result.add(i);
            } else if (l.get(i).compareTo(candidate) == 0) {
                result.add(i);
            }
        }
        return result;
    }
关于解决方案:

   public static List<Integer> maxIndices(List<Integer> l) {
        List<Integer> result = new ArrayList<Integer>();
        Integer candidate = l.get(0);
        result.add(0);

        for (int i = 1; i < l.size(); i++) {
            if (l.get(i).compareTo(candidate) > 0) {
                candidate = l.get(i);
                result.clear();
                result.add(i);
            } else if (l.get(i).compareTo(candidate) == 0) {
                result.add(i);
            }
        }
        return result;
    }

看起来您基本上没有编写任何代码来执行请求的任务@马特·鲍尔这就是我问的原因。我需要帮助来做这件事。我已经考虑过散列…摆脱将事物声明为ArrayList的习惯,如果它必须是列表,那么就将其声明为列表。@BevynQ我不想要列表。我想要一个ArrayList,所以我不理解您的评论。看起来您基本上没有编写任何代码来执行请求的任务@马特·鲍尔这就是我问的原因。我需要帮助来做这件事。我已经考虑过散列…摆脱将事物声明为ArrayList的习惯,如果它必须是列表,那么就将其声明为列表。@BevynQ我不想要列表。我想要一个ArrayList,所以我不理解你的评论。如果我理解正确,它是在添加当前索引的值,如果它是最大值?因此,如果我只想要索引本身具有最大值,那么我只需要做:index.addi;?是的,我的错。它应该是index.addi而不是index.addlist.getii如果我理解正确,它是在添加当前索引的值,如果它是最大值?因此,如果我只想要索引本身具有最大值,那么我只需要做:index.addi;?是的,我的错。它应该是index.addi,而不是index.addlist.geti
   public static List<Integer> maxIndices(List<Integer> l) {
        List<Integer> result = new ArrayList<Integer>();
        Integer candidate = l.get(0);
        result.add(0);

        for (int i = 1; i < l.size(); i++) {
            if (l.get(i).compareTo(candidate) > 0) {
                candidate = l.get(i);
                result.clear();
                result.add(i);
            } else if (l.get(i).compareTo(candidate) == 0) {
                result.add(i);
            }
        }
        return result;
    }