我有一个允许用户从数组中删除元素的程序,我试图使用compareTo()按字母顺序对它们进行排序。通过for循环。但是,空值给我带来了问题。例如,具有空值的数组:
String[] myArray = {"Apple", "Banana", null, "Durian", null, null, "Grapes"};
当Java比较它们并读取空值时,它会给我一个NullPointerException。
有什么方法可以在后面用空值对这个数组进行排序?例如:
{"Apple", "Banana", "Durian", "Grapes", null, null, null}
我知道使用向量可以解决问题,但我很好奇是否有任何方法可以在不将数组更改为向量的情况下进行。
答案 0 :(得分:26)
试试这个
Arrays.sort(myArray, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1 == null && o2 == null) {
return 0;
}
if (o1 == null) {
return 1;
}
if (o2 == null) {
return -1;
}
return o1.compareTo(o2);
}});
它产生所需的订单
答案 1 :(得分:7)
编写自己接受空值的Comparator
,并将该比较器传递给Arrays.sort(
)方法