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

踩坑日记(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的情况,以及代码的规范,一起共勉。


版权声明:本文为qq_35280509原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。