有没有一种简单的方法来交换ArrayList的对象数组?

时间:2015-09-24 22:16:17

标签: java arrays arraylist

我刚用一堆类编写了整个程序。例如,一个是:

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);,但这些都不起作用。

感谢您的时间,我希望很快能收到您的回复!

3 个答案:

答案 0 :(得分:2)

ArrayList是一个用于动态调整数组大小的包装类。普通阵列只提供&#34; setter&#34;,&#34; getter&#34;和&#34;长度&#34;方法,ArrayList提供了这个以及更多。

假设您有Cat [] catArrayList<Cat> catList。 (见下文,为什么List而不是ArrayList)。

  1. Setter:而不是catArray[i] = someCat使用catList.set(i, someCat)
  2. Getter:而不是someCat = catArray[i]使用someCat = catList.get(i)。 Getter返回Cat,因此您可以在返回的对象上调用方法:catList.get(i).meow();
  3. 尺寸:catArray.length变为catList.size()
  4. 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中,将变量声明为实际中最不具体的接口被认为是一种好习惯。对于列表,通常是CollectionList。但是,如果您将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,因为您可以稍后更改类型。