java字符串排序空值
我有一个带有一些null
值和一些字符串的字符串数组列表。我不想对arraylist进行排序,但我应该对arraylist进行排序,使空值排在最后。假设arraylist为{1,2,null,6,5,null, 3}
,我应该在最后{1,2,6,5,3,null,null}
获得空值
解决方案,我目前有:
现在,我正在构造新的arraylist,如果值为null
,我不会将其推送到新列表中,否则我会将其添加到新的arraylist中
还有更好的解决办法吗
谢谢你的帮助
# 1 楼答案
如何构造新的arraylist,如果它是实值,则将其添加到新列表中,如果它是空增量,则添加一个计数器。最后添加等于计数器值的null数
# 2 楼答案
您可以使用NullComparator from apache
# 3 楼答案
要传递到排序的自定义比较器:
然后:
# 4 楼答案
如果希望将null排序到底,并保持非null元素的顺序,那么
Comparator
将执行以下操作:如果两个
String
都为空或非空,它们将进行相等的比较。如果只有一个为空,它将比非空的小# 5 楼答案
如果您使用的是Java 8,则可以轻松构建所需的比较器:
但是如果您不使用Java8,您可以使用下面这样的比较器
您可以使用下面所述的
# 6 楼答案
如果要避免显式迭代整个列表,可以使用ArrayList。indexOf()查找空值,然后()删除它们。如果您想在列表中保留这些值,那么只需在列表的末尾添加一个空值即可。然而,如果这是一个问题的话,我认为这种方法在性能方面不是很好