所以,假设我有一堂课来描述一本书
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
ArrayList是java.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)
使用get(int index)方法List获取所需的条目:
System.out.println(Books.get(0));
Run Code Online (Sandbox Code Playgroud)
您无法List使用用于数组的表示法访问a的条目.
顺便说一句:请坚持Java命名约定
| 归档时间: |
|
| 查看次数: |
51238 次 |
| 最近记录: |