我有一个大小为1000的String数组:
String[] subStrStore = new String[1000];
我在数组中只有6个元素。如果我使用以下方式对其进行排序:
Arrays.sort(subStrStore);
我得到一个空指针异常,因为它试图比较null元素。怎么能解决这个问题呢?
答案 0 :(得分:2)
如果字符串是您可以使用的前6个元素
Arrays.sort(subStrStore, 0, 6);
答案 1 :(得分:2)
使用自定义比较器,
Arrays.sort(subStrStore, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1 == o2)
return 0;
if (o1 == null) {
return -1;
}
if (o2 == null) {
return 1;
}
return o1.compareTo(o2);
}
});
这应该在数组末尾推送所有空值
答案 2 :(得分:1)
删除null元素并排序。
String[] subStrStore = new String[1000];
subStrStore[10] = "f";
subStrStore[200] = "e";
subStrStore[300] = "d";
subStrStore[500] = "c";
subStrStore[750] = "b";
subStrStore[900] = "a";
String[] sorted = Stream.of(subStrStore)
.filter(s -> s != null)
.sorted()
.toArray(String[]::new);
System.out.println(Arrays.toString(sorted));
// -> [a, b, c, d, e, f]
答案 3 :(得分:0)
查看java.util.Arrays中的Arrays.copyOf()。它会完成我相信的工作。
答案 4 :(得分:-2)
我认为最好的方法是在比较之前检查元素。类似的东西:
if(object == null){break;}
如果您使用阵列的第一个元素,这将起作用。 1,2,3,4 NULL,NULL ... x1000。 NOT 1,2,NULL,NULL,3,4,5。&lt; - 如果你必须使用例外:) 你不想在第一个null之后检查其他元素,或者你可以只使用try catch并处理异常。