【问题标题】:Iterate over array of objects Java遍历对象数组Java
【发布时间】:2017-07-11 08:37:00
【问题描述】:

所以,我有一个班级 Model01:

public class Model01 {

private String color;
private String name;
private String bl;

    public String getColor() {
    return color;
}


public void setColor(String color) {
    this.color = color;
}

public String getName() {
    return name;
}


public void setName(String color) {
    this.name = name;
}

public String getBl() {
    return bl;
}


public void setBl(String color) {
    this.bl = bl;
}

在我的代码中的某个点,我想将从数据库接收到的一些数据映射到这个模型类,如下所示:

List<Model01> resultEntries = new ArrayList<Model01>();
for(Object[] i : res){ // res is the result of my query
Model01 m = new Model01();
   m.setColor((String) item[0]);
   m.setName((String) item[1]);
   m.setBl((String) item[2]);
 resultEntries.add(m)
}

稍后在我的代码中,我想迭代我的 resultEntries 数组,其中包含许多对象,我想比较我的对象之间的一些字段。我已经完成了类似的操作,但它似乎只迭代了我的最后一个对象。我做错了什么?

for(Model01 i : resultEntries){
if (i.getName.equals(i.getBl))
...
System.out.println(...);
}

编辑:我总是在实例化一个新的 Model01 对象,这些代码 sn-ps 实际上是在一个对数据库执行一些查询的函数中,每次调用该方法时都会创建一个新对象在 for 中添加新值。

【问题讨论】:

  • 您似乎正在创建许多与 Model01 相同的对象。也许您的代码正在运行,但您所有的对象都具有完全相同的值?
  • System.out.println(...);if 语句中吗?

标签: java loops oop object


【解决方案1】:

在最后一步中,当您尝试迭代列表“resultEnteries”时,您使用的是“for each”循环,并且一次只能访问列表中的一个对象。

您可以尝试使用迭代器:

Iterator<Model01> it = resultEnteries.iterator();
Model01 current = it.next();
Model01 next = it.next();

while (it.hasNext()) {
    if (current.name.equals(next.getB1) {
        ...
    }
    current = next;
    next = it.next();
}

【讨论】:

    猜你喜欢
    • 2017-09-19
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    相关资源
    最近更新 更多