Java 使用空值排序数组
我有一个程序,允许用户从数组中删除一个元素,我正在尝试使用compareTo()按字母顺序对它们进行排序;通过for循环。然而,空值给我带来了问题。例如,具有空值的数组:Java 使用空值排序数组,java,arrays,Java,Arrays,我有一个程序,允许用户从数组中删除一个元素,我正在尝试使用compareTo()按字母顺序对它们进行排序;通过for循环。然而,空值给我带来了问题。例如,具有空值的数组: String[] myArray = {"Apple", "Banana", null, "Durian", null, null, "Grapes"}; 当Java比较它们并读取空值时,它会给我一个NullPointerException 是否有任何方法可以使用后面的空值对该数组进行排序?例如: {"Apple", "Ba
String[] myArray = {"Apple", "Banana", null, "Durian", null, null, "Grapes"};
当Java比较它们并读取空值时,它会给我一个NullPointerException
是否有任何方法可以使用后面的空值对该数组进行排序?例如:
{"Apple", "Banana", "Durian", "Grapes", null, null, null}
我知道使用向量可以解决这个问题,但我只是好奇是否有什么方法可以不用将数组更改为向量就可以做到这一点。编写自己的接受空值的
比较器
,并将该比较器传递给数组。sort(
)方法试试这个
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);
}});
Arrays.sort(myArray,newcomparator(){
@凌驾
公共整数比较(字符串o1、字符串o2){
如果(o1==null&&o2==null){
返回0;
}
如果(o1==null){
返回1;
}
如果(o2==null){
返回-1;
}
返回o1。与(o2)相比;
}});
它使用番石榴生成所需的顺序,这很简单:
Arrays.sort(array,Ordering.natural().nullsLast())