您的位置:首页 > 编程语言 > C语言/C++

踩坑日记(09-22)之 Arrays.sort()排序报空指针错误

2016-09-23 01:18 351 查看
踩坑日记(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的情况,以及代码的规范,一起共勉。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息