2014-06-26 20 views
-1

我有推文存储在MongoDB数据库中,并且将它们拉出以进行一些分析。将字符串“null”作为Java中的对象处理

在这种情况下,我期待在与鸣叫相关的主题标签,并使用下面的代码:

BasicDBList hts = (BasicDBList)obj.get(Constants.HASHTAGS_STR); 
if (!hts.isEmpty()) 
    tb.setHashtags(hts.toArray(new String[0])); 

这工作完全...直到我碰到它用了“推特来null“作为主题标签。

在这种情况下,所述HTS阵列是:

[ null ] 

的主题标记被存储在一个TreeSet内部,并在比较的插入失败。我不想通过与null进行比较来丢弃此标签 - 是否有更好的解决方法?

字符串文字“null”存储在数据库中。 BasicDBList将其作为Object读出并且该对象转换为String时,会发生该问题。该字符串变为空字符串,而不是字符串“null”。我想了解如何获得正确解释的数据,使得具有

tb.setHashtags() 

导致结核病哈希标签“空”与它相关联,而不是抛出一个错误。

+4

呃,' “空”'(字符串)是*不*了'null'值。这个4个字母的字符串在'equals'下可以正常工作。 – user2864740

+2

String'“null”'没有什么特别之处,就像比较其他任何字符串一样。 –

+1

另外,'new String [0]'是一个空数组,不为空。 –

回答

0

验证List(BasicDBList)hts是否包含Null值。

toArray方法从ArrayList继承,它可能会返回一个包含Null值的Array。

看一看http://docs.oracle.com/javase/1.5.0/docs/api/java/util/ArrayList.html#toArray(T%5B%5D)

+0

我包含了上面的BasicDBList的内容。在列表实际上包含null的情况下,它显示为[],而不是[null] – betseyb

+0

您正在使用继承ArrayList方法toArray的BasicDBList类实例。在这个方法中,将会创建一个类型与发送参数[这里是新的String [0]]类型相同的数组,并且其大小可能因列表项目而异。列表项的数量可能与数组长度不同,所以其余的indeces必须为null。你不需要担心字符串文字“null”,显然它是一个字符串。 –

+0

您的理解只是试图检查,'hts'列表的长度和'hts.toArray(new String [0])'' –

相关问题