我刚用一堆类编写了整个程序。例如,一个是:
private Cat casts[] = new Cat[numOfCats];
最近我的老师告知我们需要使用ArrayList
。
现在,作业即将到期,我正在寻找一种快速解决方法。根据我在线阅读的内容,我将创建如下列表:
ArrayList<Cat> cats = new ArrayList<Cat>(numOfCats);
我想知道的是如何访问new ArrayList cats
的setter和getter?从我能找到的内容可能是cats get(i).getLocation().x;
或cats get(i).setSize(100);
,但这些都不起作用。
感谢您的时间,我希望很快能收到您的回复!
答案 0 :(得分:2)
ArrayList
是一个用于动态调整数组大小的包装类。普通阵列只提供&#34; setter&#34;,&#34; getter&#34;和&#34;长度&#34;方法,ArrayList
提供了这个以及更多。
假设您有Cat [] catArray
和List<Cat> catList
。 (见下文,为什么List
而不是ArrayList
)。
catArray[i] = someCat
使用catList.set(i, someCat)
someCat = catArray[i]
使用someCat = catList.get(i)
。 Getter返回Cat
,因此您可以在返回的对象上调用方法:catList.get(i).meow();
catArray.length
变为catList.size()
List还提供了add
等方法(在位置插入元素或附加到列表末尾),remove
(从列表中删除元素),indexOf
到搜索元素,等
ArrayList
与普通数组相比的最大优点是它可以调整大小。您不需要提前指定固定大小,ArrayList
会在您添加元素时增长,并在删除元素时缩小。
List的这种调整大小的特性也暗示了这两种结构之间的主要区别。使用Arrays时,您曾经创建了固定长度的数组,然后逐个设置它的元素:
Cat[] cats = new Cat[10];
for (int i = 0; i < cats.length; i ++) {
cats[i] = new Cat(); // populate cat #i
}
使用列表,您通常会创建空列表,然后向其中添加元素。您不需要关心大小,因为列表随着您添加元素而增长:
List<Cat> cats = new ArrayList<Cat>();
// we want to add 10 cats
for (int i = 0; i < 10; i ++) {
cats.add(new Cat()); //add new cat to the end of the list
}
关于声明List<Cat> cats = new ArrayList<Cat>();
。在java中,将变量声明为实际中最不具体的接口被认为是一种好习惯。对于列表,通常是Collection
或List
。但是,如果您将cats
声明为ArrayList<Cat> cats = new ArrayList<Cat>();
我故意省略了数组与列表的许多方面,包括基元,性能,泛型。如果OP感兴趣,is full的互联网articles可以提供更多详细信息。
答案 1 :(得分:0)
要向ArrayList添加元素,请使用方法add
,例如:cats.add(new Cat())
;并获取元素使用方法get
,例如cats.get(index);
其中index是ArrayList中Cat对象的位置。
答案 2 :(得分:0)
Arraylist<String> cats = new Arraylist();//using string for easier understanding
cats.get (i);//will get the string object at index i
cats.add ("hi");
cats.add (new String ("world!");//will add a new string to the list. If your using an arraylist note that it will not be sorted in any way
这就是你从arraylist获得索引的方法。
正如旁注:使用java.util.List
而不是arraylist,因为您可以稍后更改类型。