我需要从数组列表中获取值。列表中的对象在变量(x和y坐标)中存储一些值。
我尝试使用get() - 函数,但它只返回一个这样的字符串:linkTrackerTest $ Object @ 20e76e47。
另外我试过想像objects.get(0(x))但还没有工作。
有人可以帮我吗?
提前感谢: - )
答案 0 :(得分:2)
你得到的行为是完全正常的。
因为我猜您正在尝试打印get
返回的对象,并且因为您没有为Override
Object
提供toString()
方法,最好的Java可以做的是打印所谓的身份哈希码 - "有点内存地址"它的。
尝试将以下内容添加为您的班级成员:
@Override
public String toString() {
return x+" "+y;
}
这样你就会尝试打印你的类,Java会自动调用提供的toString()
ArrayList
的元素,get
方法所需的全部内容。答案 1 :(得分:1)
您正在获取该奇数字符串,因为它返回数据的内存地址而不是数据本身,因为java隐式调用toString()
。
尝试:
yourObject x = list.get(i);
或
int x = list.get(i).xValue; / int y = list.get(i).yValue;
或只是通过编写自己的
完全覆盖toString()
答案 2 :(得分:0)
不确定这是否是您要求的,但是如果您有一个对象列表 您可以在Object类
中使用getter方法获取要查找的值public class Obj {
private int x;
private int y;
// constructor in which x, y values are given
public Obj(int x_val, int y_val) {
this.x = x_val;
this.y = y_val;
}
// getter
public int get_x() {
return this.x;
}
public int get_y() {
return this.y;
}
public static void main(String[] args) {
List<Obj> Obj_Lst = new ArrayList<Obj>();
// adding objects to list
Obj_Lst.add(new Obj(1,6));
Obj_Lst.add(new Obj(2,5));
Obj_Lst.add(new Obj(3,4));
// getting values from object
System.out.println(Obj_Lst.get(0).get_x());
}
}
输出
1