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

时间:2012-10-09 21:55:55

标签: java arraylist

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

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

现在,我已经设置了一个数组列表,以包含我希望在运行时间内拥有/添加/删除的未知数量的书籍。 问题是,当我尝试通过索引访问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...)

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

3 个答案:

答案 0 :(得分:11)

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

这意味着三件事。

首先,您不必担心调整元素大小,分配或复制元素,ArrayList会为您处理。

其次,任何希望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();
        }

    }
}

哪个输出

           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

答案 1 :(得分:6)

使用List的{​​{3}}方法获取所需条目:

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

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

顺便说一句:请坚持get(int index)

答案 2 :(得分:2)

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

books.get(index)