18

ユーザーが配列から要素を削除できるようにするプログラムがあり、compareTo()を使用してアルファベット順に並べ替えようとしています。forループを介して。ただし、null値は私に問題を与えています。たとえば、null値の配列:

String[] myArray = {"Apple", "Banana", null, "Durian", null, null, "Grapes"};

Javaがそれらを比較してnull値を読み取ると、NullPointerExceptionが発生します。

この配列をnull値で並べ替える方法はありますか?例えば:

{"Apple", "Banana", "Durian", "Grapes", null, null, null}

ベクトルを使用することで問題を解決できることは知っていますが、配列をベクトルに変更せずにそれを実行できる方法があるかどうかだけ知りたいです。

4

2 に答える 2

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);
        }});

必要な順序を生成します

于 2013-01-25T04:27:27.900 に答える
7

Comparatornull 値を受け入れる独自のコードを作成し、そのコンパレータをArrays.sort() メソッドに渡します。

于 2013-01-25T02:40:04.130 に答える