使用空值对数组进行排序

jl9*_*l90 17 java arrays

我有一个程序,允许用户从数组中删除一个元素,我试图使用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)

它产生所需的订单


Ale*_*ien 7

编写自己的Comparator接受空值,并将该比较器传递给Arrays.sort(方法