0
for (int lstSize = 0; lstSize < obj.size(); lstSize++) {
    if (obj.get(lstSize).getCuffSize() == null) {
        obj.get(lstSize).setCuffSize("");
    }
}

我有一个 ArrayList,其中有许多值为 null 的项目,如果我的列表对象中的项目包含 null 值,我可以将值设置为空字符串。

例如:

循环时我得到cuffSizenull,所以我将它设置为empty String。但是我的对象中有这么多项目需要这样设置。有没有更好的方法可以将我的对象中持有空值的所有项目设置为空字符串?

4

5 回答 5

3

与其稍后将许多属性从 null 设置为空字符串,我认为最好将类本身中的这些属性初始化为空字符串,如下所示:

public class MyClass {
    private String cuffSize = ""; // init to empty String here
    private String somethingElse = ""; // init to empty String here
    ...
}

然后,即使您不调用 cuffSize 的设置器,它也会包含一个空字符串而不是 null。

于 2013-05-08T21:51:03.923 回答
3

增强的 for 将摆脱所有get()调用:

for (MyObj elem : obj) {
    if (elem.getCuffSize() == null) {
        elem.setCuffSize("");
    }
}

在 Java 8 中,您将能够使用 Lambda 以更简洁的方式执行此操作,但在 Java 7 中,我不知道有比循环更好的方法。

于 2013-05-08T21:52:46.337 回答
2

我建议您在对象的类中添加一个方法。哪个做null->""逻辑。

该方法可以返回对象引用,以便您可以在将其添加到列表中时执行此操作。就像是:

public Obj null2empty(){
  field1=field1==null?"":field1;
  field2=field2==null?"":field2;
  field3=field3==null?"":field3;
....
  return this;

}

list.add(obj.null2empty());

也可以在迭代中做到这一点:

for(Obj obj : list) obj.null2empty();
于 2013-05-08T22:00:06.313 回答
1

或者您可以使用迭代器

Iterator<MyObject> it = obj.iterator();
while(it.hasNext())
{ 
    MyObject obj = it.next();
    if(obj == null) { .. } 
}
于 2013-05-08T21:55:22.177 回答
-1

getCuffSize() 方法的实现可以在下面,以便满足您的最终目标

public String getCuffSize()
{
   return (cuffSize == null) ? "" : cuffSize;
}
于 2013-05-09T10:06:06.200 回答