Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sort a Superclass list of objects from two Subclasses

I have a List from the type Superclass A and in that List there are multiple objects from two Subclasses, Subclass B and Subclass C and want to sort them alphabetically and then filter the objects from either Subclass, something like this:

List <A> listA= new ArrayList<A>();

Collections.sort(listA);
    for (A iterator : listA)
        if (iterator instanceof B)
            System.out.println(iterator);

My question is how should I structure my code. Should I implement Comparable <A> and

public int compareTo(A a) {
    return name.compareTo(a.getName());
}

in both Superclass and Subclass? If I'm not being clear enough, please say so.

EDIT: I was getting an error due to a method I had left in one of the Subclasses that was already inherited from the Superclass, and I thought the error had anything to do with the structure of the Comparable<A>, because I wasn't certain if it was correct, but I already had the code as all you guys told me, but thanks anyway.

like image 816
Big Puncho Avatar asked Dec 13 '25 23:12

Big Puncho


1 Answers

If you can compare instances of SuperclassA regardless of whether they are SubclassB or SubclassC, then your solution with the Comparable<SuperclassA> in the superclass alone makes perfect sense. If the implementation requires knowledge of data specific to the subclasses, add abstract methods that supply this data to SuperclassA, and call them in your comparator.

like image 50
Sergey Kalinichenko Avatar answered Dec 16 '25 12:12

Sergey Kalinichenko



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!