Java 访问数组列表中的对象数据

Java 访问数组列表中的对象数据,java,arrays,list,object,Java,Arrays,List,Object,我有一个包含三个对象的数组列表(骑士) 现在,也许我想访问第二个对象的颜色属性,我该怎么做 当我使用: System.out.println(arraylist.toString()); 我只得到: [Knight@28d93b30, Knight@1b6d3586, Knight@4554617c] 使用System.out.println(arraylist.toString())打印的是arraylist包含的对象 要访问对象双色,您要做的是: System.out.println(a

我有一个包含三个对象的数组列表(骑士)

现在,也许我想访问第二个对象的颜色属性,我该怎么做

当我使用:

System.out.println(arraylist.toString());
我只得到:

[Knight@28d93b30, Knight@1b6d3586, Knight@4554617c]

使用
System.out.println(arraylist.toString())
打印的是arraylist包含的对象

要访问对象双色,您要做的是:

System.out.println(arraylist.getIndex(0).getColor);

getColor
假设您有一个用于color属性的getter

ArrayList
类包含方法
get(int)
,该方法允许您指定一个(基于零的)索引并从列表中检索相应的项

要获取列表中的第二个对象,应使用以下命令:

Knight secondKnight = arrayList.get(1);
然后,您可以访问由
Knight
类定义的任何可访问的方法或类字段,例如颜色


(因为索引是从零开始的,如果你想得到第一个
骑士
,你应该使用
arrayList.get(0)

如果你想输出骑士的颜色,你需要覆盖
toString()

为了这样做,你会想做如下的事情(类似于C++中的输出运算符重写,如果你熟悉它)。


方法一

必须使用get(inti)方法,该方法在数组列表的索引处检索对象,然后可以使用“.field”访问该对象的字段

考虑下面的场景,它将类似于你正在做的,你有一个骑士类

我将使用外星人类:

public class Alien{

    //Properties of aliens
    int numOfFingers;
    String name;
    String color;

    public Alien(int num, String name, String color)
    {
        this.numOfFingers = num;
        this.name = name;
        this.color = color;
    }       

}//End of alien class
包含数组列表的类:

import java.util.ArrayList;

public class DetailExtractor {

    //ArrayList containing alien objects
    static ArrayList<Alien> alienRegister = new ArrayList<>();

    public static void main(String[] args){
        //Populating the arrayList
        alienRegister.add(new Alien(3, "Zorg", "Blue"));
        alienRegister.add(new Alien(5, "Chad", "Purple"));


        //Retrieving a property, say name of second alien...

        System.out.println(alienRegister.get(1).name);

    }

}
假设你在骑士类中有一些颜色的公共getter,这将起作用。类似于-

class Knight {
    ....
    String color;
    ....
    ....

    public String getColor() {
        return color;
    }
}

arrayList.get(index)
U还可以重写toString方法以接收比'Knight@28d93b30'
@Override
public String toString(){
    //code to get required string followed by a return statement
}
String color = arraylist.get(1).getColor();
class Knight {
    ....
    String color;
    ....
    ....

    public String getColor() {
        return color;
    }
}