【问题标题】:How to find max and min from list in java [closed]如何从java中的列表中找到最大值和最小值[关闭]
【发布时间】:2019-12-09 08:55:50
【问题描述】:

我需要从列表中找到学生分数的最大和最小统计数据。该列表包含学生 ID 和学生标记。我不太确定该怎么做。

这是读取文件并创建列表的代码:

public void readFile(Scanner in)
{
    inputStudentID = null;
    inputMark = 0;

    try
    {
        File file = new File("Marks.txt");
        in = new Scanner(file);
    }
    catch (FileNotFoundException e)
    {
        System.out.println(e.getMessage());
        System.out.println("in " + System.getProperty("user.dir"));
        System.exit(1);
    }
    while (in.hasNextLine())
    {
        String studentRecord = in.nextLine();
        List<String> values = Arrays.asList(studentRecord.split(","));
        String inputStudentID = values.get(0);
        String sInputMark;
        sInputMark = values.get(1);
        int inputMark = Integer.parseInt(sInputMark);
        addStudent(inputStudentID, inputMark);
    }
    in.close();
}

【问题讨论】:

  • 你能证明任何努力编写代码来找到最大值和/或最小值吗?
  • 有一个想法,您可以根据学生的分数对列表进行排序,并尝试分别获取列表的第一个和最后一个索引的最小值和最大值。
  • @SafeerAnsari 你可以在线性时间内完成。排序是不必要的。
  • 提示:IntStream.summaryStatistics().
  • 只需初始化 2 个变量,最大可能和最小可能,然后在列表中迭代比较它们。

标签: java max min


【解决方案1】:

假设您有一些索引列表,因为 addStudent 并没有真正告诉我太多(否则只需将逻辑应用于您拥有的任何内容):

private int getMax(ArrayList<Integer> marks) {
    int max = marks.get(0);
    int index = 0;
    for(int x = 1; x < marks.size(); x++) {
        if(max < marks.get(x)) {
            max = marks.get(x);
            index = x;
        }
    }
    return index;
}

更好的解决方案:

你可以简单地做 Collections.max(list) – Imaginary Pumpkin

但我还是会留下我来展示如何找到最大值的逻辑。

【讨论】:

  • 你可以简单地做Collections.max(list)
  • 这绝对是一个更好的解决方案。
  • 工作“列表”从何而来,因为我的代码发现了错误?
  • 'list' 是指包含标记的集合对象。您目前使用您的 addStudent 方法将它们存储在对象中的某个位置(我至少假设)。如果将它们存储到 Collection 类型的对象中,则可以使用 max 函数。
猜你喜欢
  • 2020-12-02
  • 1970-01-01
  • 2020-03-08
  • 2021-10-10
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 2013-01-26
  • 2022-01-07
相关资源
最近更新 更多