当前位置: 首页 > 知识库问答 >
问题:

如何将for each循环扩展到所有对象?

曹凯泽
2023-03-14

如果我更改if(book.getPubyear()),我不知道如何检查链接列表中的每个记录和书籍

public class sredniaocen {
class Book {
int pubyear;
String title;

public Book(String title, int pubyear) {
this.title = title;
this.pubyear = pubyear;
}

public String getTitle() {
return this.title;
}

public void setTitle(String title) {
this.title = title;
}

public int getPubyear() {
return this.pubyear;
}

public void setPubyear(int pubyear) {
this.pubyear = pubyear;
}

public static void main(String args[]) {


sredniaocen.Book book = new sredniaocen().new Book("abcd", 1998);
sredniaocen.Book book1 = new sredniaocen().new Book("efgh", 1999);
sredniaocen.Book book2 = new sredniaocen().new Book("ijkl", 2000);
sredniaocen.Book book3 = new sredniaocen().new Book("mnou", 2001);
sredniaocen.Book book4 = new sredniaocen().new Book("prst", 2002);
sredniaocen.Book book5 = new sredniaocen().new Book("wxyz", 2003);

LinkedList<Book> booklist = new LinkedList<Book>();
booklist.add(book);
booklist.add(book1);
booklist.add(book2);
booklist.add(book3);
booklist.add(book4);
booklist.add(book5);


for (Book title : booklist) {
if (book.getPubyear() > 2000) {
System.out.println(book.title);
}
}
System.out.println("Książka " + book.title + " " + book.pubyear);
}

}

我今天花了很多时间,但我不知道。

共有2个答案

龙永福
2023-03-14

我改变了

LinkedList<Book> booklist = new LinkedList<Book>();
booklist.add(new Book("abc", 1998));
booklist.add(new Book("def", 1999));
booklist.add(new Book("ghi", 2000));
booklist.add(new Book("jkl", 2001));
booklist.add(new Book("mno", 1978));
booklist.add(new Book("prs", 2012));
booklist.add(new Book("tuw", 2006));


for (Book book : booklist) {
if (book.getPubyear() > 2000) {
System.out.println(book.getTitle());
}

现在工作正常

荆学民
2023-03-14

我认为您可能不需要为您的用例使用LinkedList

import java.util.StringJoiner;

public class Book {
    private String title;
    private int pubYear;

    public Book(String title, int pubYear) {
        this.title = title;
        this.pubYear = pubYear;
    }

    public String getTitle() {
        return this.title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public int getPubYear() {
        return this.pubYear;
    }

    public void setPubYear(int pubYear) {
        this.pubYear = pubYear;
    }

    @Override
    public String toString() {
        return new StringJoiner(", ", Book.class.getSimpleName() + "[", "]")
            .add("title='" + title + "'")
            .add("pubYear=" + pubYear)
            .toString();
    }
}
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        Book book0 = new Book("abcd", 1998);
        Book book1 = new Book("efgh", 1999);
        Book book2 = new Book("ijkl", 2000);
        Book book3 = new Book("mnou", 2001);
        Book book4 = new Book("prst", 2002);
        Book book5 = new Book("wxyz", 2003);
        List<Book> booksList = Arrays.asList(book0, book1, book2, book3, book4, book5);
        System.out.printf("All books: %s%n", booksList);
        System.out.println("Books published after the year 2000:");
        for (Book book : booksList) {
            if (book.getPubYear() > 2000) {
                System.out.println(book);
            }
        }
    }
}

输出:

All books: [Book[title='abcd', pubYear=1998], Book[title='efgh', pubYear=1999], Book[title='ijkl', pubYear=2000], Book[title='mnou', pubYear=2001], Book[title='prst', pubYear=2002], Book[title='wxyz', pubYear=2003]]
Books published after the year 2000:
Book[title='mnou', pubYear=2001]
Book[title='prst', pubYear=2002]
Book[title='wxyz', pubYear=2003]

注意:如果实际列表中的书籍是按出版年份排序的,请考虑向后迭代列表,并在看到少于2000年的年份时立即中断,或者更好地使用集合 二进制搜索(binarySearch)以在O(log n)时间内找到拆分点。

 类似资料:
  • 所以我的程序需要一种循环ArrayList类型。 关于它的唯一循环的事情是get(int index)方法,这是原始的: 我不能让它工作,因为我的班级看不到它,因为它是私人的。 另外,我不想为此使用任何外部库,因为我认为没有适合我需要的库,因为我不想要一个真正的circularArray,而只想要它的一部分功能,其余部分是常规的ArrayList。 所以我有两个问题:

  • foreach循环遍历列表值并将控制变量(var)依次设置为列表的每个元素 - 语法 (Syntax) Perl编程语言中foreach循环的语法是 - foreach var (list) { ... } 流程图 (Flow Diagram) 例子 (Example) #!/usr/local/bin/perl @list = (2, 20, 30, 40, 50); # foreach lo

  • 我尝试将一个循环转换为一个循环在flutter中等待循环。我想要循环的元素是Firebase实时数据库中的快照。 我的函数如下所示: 我尝试了不同的方法,但是我没有让函数工作。 第一次尝试: 错误: 未处理的异常:键入'_InternalLinkedHashMap 第二次尝试: 错误: 未处理的异常:键入'_InternalLinkedHashMap 在所有的尝试中,我都得到了相同的错误。但是上述

  • 问题内容: 需要将foreach循环中的值存储到数组中,需要帮助。 下面的代码不起作用,仅存储上次尝试的值,但这也不起作用,将不胜感激。 问题答案: 在循环外声明数组,并用于向数组添加项目:

  • 如果我试图在java中查找遍历foreach循环的次数,还有比这更好的方法吗? 我知道我可以只使用一个普通的for循环并拥有一个迭代器I,但我只是想知道是否有一种更优雅的方法来使用foreach.tanks in prevair:) 编辑:正如Jon Skeet指出的,上面的代码将新的按钮实例分配给迭代变量。哎呀。基于其他评论,我相信最实用的使用是一个正常循环。这是我要用的版本。谢谢大家的帮助!