踩坑日记(09-22)之 Arrays.sort()排序报空指针错误
请看以下代码:
public static void sort(){
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
String[] array = list.toArray(new String[list.size()]);
Arrays.sort(array);
list = Arrays.asList(array);
}
这是一个很普通的代码,功能就是
1.先将List转成数组
2.使用Arrays.sort()方法进行排序
3.最后将数组转回List的过程
在使用Arrays.sort()方法时,要特别注意排序的对象中是否会存在null,如果存在null,则程序会报 空指针的错误.
public static void sort(){
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add(null);
list.add("e");
String[] array = list.toArray(new String[list.size()]);
Arrays.sort(array);
list = Arrays.asList(array);
}
上图的程序就会报空指针,为了避免发现这样低级的错误,首先要对list进行过滤。
public static void sort(){
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add(null);
list.add("e");
list = filterNull(list);
String[] array = list.toArray(new String[list.size()]);
Arrays.sort(array);
list = Arrays.asList(array);
}
public static List<String> filterNull(List<String> list){
List<String> filterList = new ArrayList<String>();
for(String str : list){
if(str != null){
filterList.add(str);
}
}
return filterList;
}
在日常的代码中要多注意数据为null的情况,以及代码的规范,一起共勉。