如果为null,则将空字符串发送到列表项

时间:2013-05-08 21:45:14

标签: java

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

我有一个ArrayList,其中有很多项的值为null,如果我的List Object中的项目保持空值,我可以将值设置为空字符串。

例如:

循环播放时,cuffSizenull,因此我将其设置为empty String。但是我的对象中有很多项需要像这样设置。 有什么更好的方法可以将我的对象中保存空值的所有项目设置为空字符串吗?

5 个答案:

答案 0 :(得分:3)

我认为最好将类本身内的属性初始化为空字符串,而不是将很多属性从null设置为空字符串,而不是像以下那样:

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

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

答案 1 :(得分:3)

增强版可以摆脱所有get()次调用:

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

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

答案 2 :(得分: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();

答案 3 :(得分:1)

或者您可以使用iterator

Iterator<MyObject> it = obj.iterator();
while(it.hasNext())
{ 
    MyObject obj = it.next();
    if(obj == null) { .. } 
}

答案 4 :(得分:-1)

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

public String getCuffSize()
{
   return (cuffSize == null) ? "" : cuffSize;
}