[fix] Java NullPointerException ComparableTimSort countRunAndMakeAscending when sorting a List

Comparable NullPointerException

If you are trying to sort a List say ArrayList of a custom class and have that class implement a Comparable interface you may run into NullPointerException with ComparableTimSort if you have a null object in your list.

import java.util.*;

 * Code2care.org Java Examples
 * Date: 14 Jun 2022
 * Version: v1
 * Author: Code2care
public class ComparableExampleJava {

    public static void main(String[] args) {

        Employee e1 = new Employee(1, "Sam");
        Employee e2 = new Employee(3, "James");
        Employee e3 = new Employee(2, "Adam");

        List<Employee> empList = new ArrayList<>();
        empList.add(null);  //Null Object


class Employee implements Comparable<Employee> {

   private int eid;
    private String eName;

    Employee(int eid, String eName) {
        this.eid = eid;
        this.eName = eName;

    public int compareTo(Employee employee) {
        if(employee.eid == this.eid) return 0;
        else if(employee.eid >= this.eid) return 1;
        else return -1;
Error Stacktrace:
Exception in thread "main" java.lang.NullPointerException
	at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:321)
	at java.util.ComparableTimSort.sort(ComparableTimSort.java:188)
	at java.util.Arrays.sort(Arrays.java:1312)
	at java.util.Arrays.sort(Arrays.java:1506)
	at java.util.ArrayList.sort(ArrayList.java:1464)
	at java.util.Collections.sort(Collections.java:143)
	at EqualsExampleJava.main(ComparableExampleJava.java:26)

These are some work-arounds,

  • Make sure that null's are not a part of the list, you can filter them.
  • If the list is a collection of String's, you might replace null with empty string.
Copyright © Code2care 2024 | Privacy Policy | About Us | Contact Us | Sitemap