【问题标题】:Specific element in a List JavaList Java 中的特定元素
【发布时间】:2022-11-01 13:11:08
【问题描述】:

所以我想输出列表的最大价格。

现在我需要 for 循环的 i-1 元素来获取索引,然后将其打印为 List 应该怎么样?

我在 C# 方面有一些经验,我认为这在那里有效,但在 Java 中却没有。 :/

【问题讨论】:

  • Please do not upload images of code/data/errors. - 话虽如此,您似乎知道您使用 BookList1.get(i) 方法访问 List 元素,因为您在循环中执行此操作,为什么您突然决定在几行之后尝试 BookList1[i-1]?第二个版本根本不是 Lists 在 java 中的工作方式。
  • 为什么你认为你需要i-1th 元素?那将永远是列表的最后一个元素。只需打印max。此外,根本不需要ib = BookList1.get(i);有了那个循环,b 已经是这本书了。
  • 我建议查看java中的Streaming Api
  • 使用 Collections.max(BookList1, Comparator.comparing(book -> book.getPrice());... 它可以在 1 行中为您提供所需的内容。
  • 还要将您的代码放在您的问题中,并在开头和结尾分别使用 ```。这会将您的文本格式化为代码。

标签: java list methods


【解决方案1】:

Java不支持覆盖操作符,所以BookList1[i-1]是不允许的,因为BookList1不是数组。您需要使用 BookList1.get(i-1) 来获取该索引上的元素。在 C# 中,您可以使用 BookList1[i],因为 C# 列表实现了此运算符。这已经在 C++ 中引入,但从未在 Java 中引入。

【讨论】:

  • 谢啦。那是我不知道的。
【解决方案2】:

您可以使用以下方法打印最昂贵的:

public void getMostExpensive (List<Book> bookList){
    Book expensive = bookList.get(0);
    for (Book book : bookList) {
            if(book.getPrice() > expensive.getPrice())
                expensive = book;
    }
    System.out.println(expensive.getPrice());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 2012-04-08
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多