访问ArrayList中的对象类变量(java)

use*_*921 1 java arraylist

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

   public class Book {
     String name;
     int pages;
     String auother;
     boolean available;
     String rentername;
  }
Run Code Online (Sandbox Code Playgroud)

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

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...)
Run Code Online (Sandbox Code Playgroud)

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

Mad*_*mer 12

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

这意味着三件事.

首先,您不必担心将元素调整大小,分配或复制到数组中,ArrayList它会为您处理.

其次,任何想要a的方法List都不关心实现(你可以传递一个LinkedList)来解耦代码(这意味着你可以改变实现而不会对那些依赖它的人产生负面影响,因为通过List接口签订了合同)

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

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

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

你也可能对此有兴趣

当然还有其他方法,但这些方法立即有用.

我也读了一下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();
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

哪个输出

           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
Run Code Online (Sandbox Code Playgroud)


Baz*_*Baz 6

使用get(int index)方法List获取所需的条目:

System.out.println(Books.get(0));
Run Code Online (Sandbox Code Playgroud)

您无法List使用用于数组的表示法访问a的条目.

顺便说一句:请坚持Java命名约定