您得到
NullPointerExceptions
的原因可以由(强调我的)的javadoc
Arrays#sort()解释:
根据对象的自然顺序,将指定对象数组按升序排序。 数组中的所有元素都必须实现
Comparable接口。
因为
Arrays.sort()期望
Comparable元素而不是
null值,所以
NullPointerException当方法尝试调用时,您最终得到a
compareTo()。
解决此问题的“立即解决”的方法是简单地确保
null将数组中的所有元素替换为非
null,例如
""。因此,请在创建数组时以及删除
String和将
null元素设置为之后遍历数组
""。但是,此解决方案对于您的代码而言可能效果不佳,因为在
String删除每个解决方案之后都需要另一个循环,这可能会增加工作量。至少由于
String池的魔力,它不需要您创建一堆对象,因此它比使用其他对象可能要好一些。
更好的解决方案是只使用
ArrayList<String>而不是原始数组。毕竟,您已经在使用来管理
addString()和
removeString(),因此从数组到数组的转换要少得多
ArrayList。此外,您在排序时无需担心NPE(至少在您的用例中;在排序时添加
null到
Collection仍然会导致NPE)。
您也可以只使用原始数组,但是管理该数组会很烦人,因此我不建议您这样做。如果操作正确,则不必担心NPE。



