user1872371
user1872371

Reputation: 341

Collections Sorting in Java

Whats wrong with this sort? It doesn't work properly.

 public List<LibRegistration> getLibraryRegistrationsSortedByTypeAndName()
    {
        List<LibRegistration> l = getLibRegs();
        Collections.sort(l, new Comparator<LibRegistration>() {
            public int compare(LibRegistration o1, LibRegistration o2) {
               return o1.getLibraryType().compareTo(o2.getLibraryType()) != 0?o1.getLibraryType().compareTo(o2.getLibraryType()):o1.getLibraryName().compareTo(o2.getLibraryName());
            }
        });
        return l;
    }

Upvotes: 1

Views: 989

Answers (1)

Joop Eggen
Joop Eggen

Reputation: 109547

Nothing wrong, more clear:

        public int compare(LibRegistration o1, LibRegistration o2) {
            int cmp = o1.getLibraryType().compareTo(o2.getLibraryType());
            if (cmp == 0)
                cmp = o1.getLibraryName().compareTo(o2.getLibraryName());
            return cmp;
        }

Though nulls not allowed and compareTo well defined.

Upvotes: 4

Related Questions