【问题标题】:Trying to print the maximum value of the arraylist in java试图在java中打印arraylist的最大值
【发布时间】:2013-11-26 05:32:35
【问题描述】:

我已经按降序对数组列表进行了排序,现在我想打印最大值。 arraylist 包含学生的姓名和他们的成绩。我想打印成绩最高的学生的姓名。我不需要打印他们的成绩。只是名字。这是我的代码

public void printStudent(){

    Collections.sort(studentList);
    Collections.reverse(studentList);
    System.out.println("Best student is: ");
    for (Student s: studentList){
        System.out.println(s.toString());
    }
}

现在这会打印整个学生列表和他们的成绩,但我只想打印成绩最高的学生的姓名,我尝试了很多方法,但似乎无法正常工作。谢谢!

【问题讨论】:

  • 基本上,您的问题需要重新表述为“如何获得数组列表的第一项?”,对吗?
  • 你真的需要排序来完成这个吗?只用一个循环执行一次传递是否太难了?如果你很懒Collections.max 还是更好。你不想过早地优化,但我认为这对于这个简单的任务来说有点过分了。

标签: java arraylist max


【解决方案1】:

提示:

  • 如果你将一个列表按升序排序,最大的元素在哪里?

  • 如果你再把列表倒过来,现在最大的元素在哪里?

  • 如何获取列表的第 N 个元素? (元提示...阅读 javadoc!)

【讨论】:

  • 这是唯一真正帮助 OP 学习的答案,而不是提供免费代码,只需复制和粘贴即可解决作业......
【解决方案2】:

使用Collections.max 而不是排序。

【讨论】:

  • 这通常是正确的方法,但 OP 可能已被指示对列表进行排序和反转 ...
  • @ZongZhengLi - 为什么?这显然是一个初学者编程作业,旨在让学生开始学习编程的基础知识。期待一个“最优”的解决方案(在任何意义上)对于学生在学习的这一点上是无关紧要的。
  • @StephenC 我同意,不需要完美。但是,当学生可以对列表进行排序和反转,但不知道如何访问特定元素时,您会怎么想?我认为在教育环境中应用排序等有更好的方法。
【解决方案3】:

您已经按相反的顺序对客户进行了排序,那么最高等级应该在您收藏的第一位。

如下所示。

Customer c = customerList.get(0); // getting the first elementt
System.out.println(c.toString());

【讨论】:

    【解决方案4】:

    您的 Combarable 接口设置如何? Collections.sort 就是基于此。

    因此,您可以打印 customerList.get(customerList.size() - 1) 来打印列表中的最后一个索引。 或者你可以打印 customerList.get(0)

    但正如我所说:这取决于您如何比较客户。

    【讨论】:

      猜你喜欢
      • 2012-12-15
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多