1

所以,假设我有一门课来描述一本书

   public class Book {
     String name;
     int pages;
     String auother;
     boolean available;
     String rentername;
  }

现在,我设置了一个数组列表来包含我希望在运行期间拥有/添加/删除的未知数量的书籍。问题是,当我尝试通过索引访问数组列表中的某本书时,我得到了一个错误。

enter code here

ArrayList Books = new ArrayList();
Book bk1 = new Book();
Books.add(bk1);
System.out.println(Books[0]. --->>> won't give me accesses to the 'Book' class variables (name, pages...)

那么,我怎样才能使它成为类变量呢?谢谢。

4

3 回答 3

12

ArrayListjava.util.List由动态数组支持的集合的实现。

这意味着三件事。

首先,您无需担心调整数组的大小、分配或处理元素到数组中,它们ArrayList会为您处理。

其次,任何想要 a 的方法List都不关心LinkedList解耦代码的实现(您可以传递 a 代替)(这意味着您可以更改实现而不会对依赖它的人产生不利影响,因为通过List接口制定的合同)

第三,要与 的内容进行交互List,您需要使用一种或多种接口访问方法。

你已经知道了add,但是要获取一个对象,你需要使用getwhich;

返回此列表中指定位置的元素

你也可能对此有兴趣

当然,还有其他方法,但这些都是立即有用的。

我也会阅读Collections Trail

更新示例

public class Test {

    public static void main(String[] args) {
        new Test();
    }

    public Test() {

        List<Book> listOfBooks = new ArrayList<Book>();
        Book bk1 = new Book();
        listOfBooks.add(bk1);

        System.out.println("           bk1 = " + bk1);
        System.out.println("listOfBooks(0) = " + listOfBooks.get(0));

    }

    public class Book {

        String name;
        int pages;
        String auother;
        boolean available;
        String rentername;

        @Override
        public String toString() {
            return "Book: name = " + name + "; pages = " + pages + "; available = " + available + "; rentername = " + rentername + "; hashCode = " + hashCode();
        }

    }
}

哪个输出

           bk1 = Book: name = null; pages = 0; available = false; rentername = null; hashCode = 1137551390
listOfBooks(0) = Book: name = null; pages = 0; available = false; rentername = null; hashCode = 1137551390
于 2012-10-09T22:06:55.160 回答
6

使用 的get(int index)方法List获取你想要的条目:

System.out.println(Books.get(0));

您不能List使用用于数组的表示法访问 a 的条目。

顺便说一句:请遵守Java 命名约定

于 2012-10-09T21:56:45.677 回答
2

您需要创建公共 setter 和 getters 方法来访问字段,并访问您需要的 book 实例

books.get(index)
于 2012-10-09T21:56:44.823 回答