我有一个程序,允许用户从数组中删除一个元素,我试图使用compareTo()按字母顺序对它们进行排序; 通过for循环.但是,空值给我带来了问题.例如,具有空值的数组:
String[] myArray = {"Apple", "Banana", null, "Durian", null, null, "Grapes"};
Run Code Online (Sandbox Code Playgroud)
当Java比较它们并读取空值时,它会给我一个NullPointerException.
有什么方法可以在后面用空值对这个数组进行排序吗?例如:
{"Apple", "Banana", "Durian", "Grapes", null, null, null}
Run Code Online (Sandbox Code Playgroud)
我知道使用Vectors可以解决问题,但我只是好奇,如果有任何方法我可以做到这一点,而无需将我的数组更改为向量.
Evg*_*eev 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);
}});
Run Code Online (Sandbox Code Playgroud)
它产生所需的订单