2017-02-21 111 views
0

所以,我有一个类Model01:遍历对象数组的Java

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对象,这些代码片段实际上是执行一些数据库查询,每次调用该方法的新对象将与新值来创建一个函数内在里面。

+1

你似乎在创建大量Model01的相同对象。也许你的代码工作,但所有的对象具有完全相同的值? –

+0

是'if'语句中的'System.out.println(...);'内部? –

回答

1

在最后一步中,当您尝试遍历List的'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(); 
}