所以,假设我有一节课来描述一本书
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...)
那么,我怎样才能让它变成类变量呢? 感谢。
答案 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)