【问题标题】:Creating a method to print ArrayList, then calling it in another class创建一个打印 ArrayList 的方法,然后在另一个类中调用它
【发布时间】:2015-12-10 10:27:19
【问题描述】:

我已经在我的类“BookList”中构建了一个 Arraylist,但我需要它在另一个类中打印。

我想我可能不得不将 Arraylist 的打印变成一个方法,这样就可以从不同的类中调用它;如果我错了,我还能做些什么来做到这一点?

下面是我的代码,供参考。

import java.util.ArrayList;


public class BookList {

public static void main (String[] args){

    Book a = new Book();

    a.setTitle("Random ");
    a.setAuthor("Craig Robertson");
    a.setBookID("1847398812");
    a.setonLoan(false);
    a.setNumberofLoans(3);

    Book b = new Book();

    b.setTitle("The Last Refuge");
    b.setAuthor("Craig Robertson");
    b.setBookID("1471127753");
    b.setonLoan(false);
    b.setNumberofLoans(2);

    Book c = new Book();

    c.setTitle("The Bird That Did Not Sing");
    c.setAuthor("Alex Gray");
    c.setBookID("0751548278");
    c.setonLoan(true);
    c.setNumberofLoans(7);

    ArrayList<Book> BookList = new ArrayList<Book>();
    BookList.add(a);
    BookList.add(b);
    BookList.add(c);

    int count = BookList.size();
    System.out.println("Count: " + count);
    System.out.println("");

        for (Book  d : BookList){
            System.out.println(d);

    }   
  }
}

为此,我的“Book”类中有 toString() 方法,因此我可以打印所有对象。

另一个问题:如何只打印每个对象的标题和作者?

【问题讨论】:

    标签: java arraylist


    【解决方案1】:

    在您的Book 类中创建一个静态 方法来处理显示:

    public static void showBooks(ArrayList<Book> books) {
        for (Book  d : Books){
            System.out.println(d); // calls the 'toString' method on each Book object
    }
    

    并从 main 方法中这样调用它:

    ArrayList<Book> BookList = new ArrayList<Book>();
    BookList.add(a);
    BookList.add(b);
    BookList.add(c);
    
    Book.showBooks(BookList); // prints the books, one by one
    

    如何只打印每个对象的标题和作者?

    您可以选择仅在Book 类的覆盖 toString 方法中打印titleauthor

    @Override
    public String toString() {
        // 'author' & 'title' are members of the 'Book' class
        return "Author: " + author + "- Title: " + title;
    }
    

    【讨论】:

      【解决方案2】:

      像这样覆盖 BookList tostring 方法:

      public class BookList{
          @Override
          public String toString(){
              // Return some string here
          }
      }
      

      那就正常使用吧。

      System.out.println(myBookList);
      

      【讨论】:

        猜你喜欢
        • 2020-08-19
        • 2020-08-16
        • 2021-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-19
        相关资源
        最近更新 更多