了解我的ObservableList

时间:2013-06-07 01:11:07

标签: for-loop observablecollection

有人可以帮我理解Java在做什么吗?我已经创建了一个名为data的ObservableList。我在列表中添加了元素,如下所示:

data.add(new ClientList(LastName, FirstName, Street, City, State, Zip, Telephone, DateOfBirth);

所以我创建了一个表单,用于将人员添加到此列表中,该列表保存在Java的内存中,以便稍后单击按钮添加,让我们说5个人到我的数据库。我的第一个问题是,我是否正确地将其描述为5个对象的列表,每个对象包含8个值?如果没有,那么使用Java术语描述在这里做了什么的正确方法是什么?

现在,鉴于我将上面的ObservableList称为数据,如果我输入命令

System.out.println(data.toString())

(假设我的列表中有5个客户端)我会得到一个在屏幕上引用的5个对象的列表(虽然只是指向内存中“槽”的指针),对吗?到目前为止,我真的希望人们要么说我是对的,要么告诉我我的术语都是错的,应该[在这里插入正确的术语]。或者,如果我只是偏离基地,请纠正它。

现在我不明白的是,如果我写下面的代码:

for (Object o : data) {
    [variable] = data.get(0);
}

整数(0)似乎是指索引为0的列表中的对象(这将是列表中第一个人的所有值,对吧?)。 NetBeans希望我为这个变量设置一个“Object”类型,我放在那里的任何其他东西都会给我一个编译错误或运行时错误,这取决于我如何编写语句。

但是因为我在列表上进行迭代,我认为这个整数应该指向for循环当前正在处理的对象中的第一个值(在我的情况下,LastName)。从我可以推断出我的代码如何运行,我是不正确的,前一段是正在发生的事情。那么,我如何读取列表中每个对象的值?

1 个答案:

答案 0 :(得分:0)

好的,让我回答一下,因为我做了搞清楚了。我可能错了,但我仍然想把它放在这里,所以我在以后继续学习时会得到这些信息,所以如果遇到同样的问题,其他人也可能会有这些信息。

首先,我似乎是正确的,“data.get(0)”是列表中的第一个对象,该对象是LastName,FirstName等数组。我应该没有使用data.get(int [object]),而是o。[variable] .get()。通过这种方式,迭代器已经让我成为众多对象中的一个,每个对象都包含许多变量。但是数据模型为每个变量定义了getter,因此调用[object]。[variable] .get()运行getter,从而返回该对象中变量的正确值和类型。

所以...我的迭代器的正确代码是:

for (Object o : data) { //"For each object we'll call 'o' in the already defined list named 'data' ..."
    String lastName = o.lastName.get();
        // repeat this pattern for each variable in the object
        // [Type] [variable] = [object].[variable].get();
}

在数据模型中定义了一个getter:

public SimpleStringProperty lastNameProperty() {
    return lastName;
}

(除了:使用SimpleStringProperty并将“Property”附加到变量“lastName”以使getter的名称更容易为TableView的列创建CellValueFactory)