Java 如果为null,则向列表项发送空字符串 for(int-lstSize=0;lstSize“逻辑的
我有一个ArrayList,其中有许多项的值为null,如果我的列表对象中的项的值为null,我可以将值设置为空字符串 例如:Java 如果为null,则向列表项发送空字符串 for(int-lstSize=0;lstSize“逻辑的,java,Java,我有一个ArrayList,其中有许多项的值为null,如果我的列表对象中的项的值为null,我可以将值设置为空字符串 例如: 循环时,我将袖口大小设置为空,因此我将其设置为空字符串。但是我的对象中有很多项需要这样设置有没有更好的方法可以将对象中所有包含null值的项设置为空字符串?与其稍后将许多属性从null设置为空字符串,不如将类本身中的属性初始化为空字符串,如下所示: for (int lstSize = 0; lstSize < obj.size(); lstSize++) {
循环时,我将
袖口大小
设置为空
,因此我将其设置为空字符串
。但是我的对象中有很多项需要这样设置有没有更好的方法可以将对象中所有包含null值的项设置为空字符串?与其稍后将许多属性从null设置为空字符串,不如将类本身中的属性初始化为空字符串,如下所示:
for (int lstSize = 0; lstSize < obj.size(); lstSize++) {
if (obj.get(lstSize).getCuffSize() == null) {
obj.get(lstSize).setCuffSize("");
}
}
然后,即使不调用cuffSize的setter,它也将包含一个空字符串而不是null。增强的for将消除所有
get()
调用:
public class MyClass {
private String cuffSize = ""; // init to empty String here
private String somethingElse = ""; // init to empty String here
...
}
在Java 8中,您可以使用Lambdas以更干净的方式执行此操作,但在Java 7中,我不知道还有比循环更好的方法。或者您可以使用:
Iterator it=obj.Iterator();
while(it.hasNext())
{
MyObject obj=it.next();
如果(obj==null){..}
}
我建议您在对象的类中添加一个方法。哪些是执行null->“
逻辑的
该方法可以返回对象引用,以便您可以在将其添加到列表中时执行此操作。比如:
Iterator<MyObject> it = obj.iterator();
while(it.hasNext())
{
MyObject obj = it.next();
if(obj == null) { .. }
}
也可以在迭代中执行此操作:
public Obj null2empty(){
field1=field1==null?"":field1;
field2=field2==null?"":field2;
field3=field3==null?"":field3;
....
return this;
}
list.add(obj.null2empty());
getCuffSize()方法的实现可以如下所示,以便满足您的最终目标
for(Obj obj : list) obj.null2empty();
为什么不能将列表成员保留为空,直到您实际需要检查列表的内容以达到其预期目的?增强的for将消除所有
get()
调用。答案基本上是“是的,如果您可以访问列表初始化的任何位置。”您可以在第一次创建列表时轻松地执行null
检查。但除非如此,否则你必须循环列表,以某种方式替换这些值(Keppil的评论建议了一种更干净的方法)。除非你的名单太长,以至于O(n)操作实际上是一个问题(而且我认为这个问题是你最不担心的问题)。@downvoter我不认为有理由投反对票。你一直在否决我的答案。我也报告了这件事。
for(Obj obj : list) obj.null2empty();
public String getCuffSize()
{
return (cuffSize == null) ? "" : cuffSize;
}