0

i dont know how to order alphabetically an ArrayList<Object> contents alphabetically, i need to order this: -Order by name -Order by lastName -Order versely by lastName

Thanks for helping and your time!

import java.util.ArrayList;

public class FirstClass {
    public static void main(String[] args) {
        ArrayList<Object> listPersons = new ArrayList<>();

        Person person1 = new Person();
        Person person2 = new Person();
        Person person3 = new Person();
        Person person4 = new Person();
        Person person5 = new Person();

        person1.setName("Gonzalo");
        person1.setLastName("Ramos");
        listPersons.add(person1);
        person2.setName("Nicolas");
        person2.setLastName("Lopez");
        listPersons.add(person2);
        person3.setName("Sergio");
        person3.setLastName("Gonzalez");
        listPersons.add(person3);
        person4.setName("Emilio");
        person4.setLastName("Suarez");
        listPersons.add(person4);
        person5.setName("Carolina");
        person5.setLastName("Chavez");
        listPersons.add(person5);


    }
}


public class Person {
    String name;
    String lastName;

    public String getName () {
        return name;
    }
    public void setName (String name) {
        this.name = name;
    }

    public String getLastName () {
        return lastName;
    }
    public void setLastName (String lastName) {
        this.lastName = lastName;
    }
}

I tried to solve it in diferent ways but I couldn't make it work dynamically and correctly

Gonzalo
  • 31
  • 5

1 Answers1

1

Use any java version 8+

List<Person> sortedByName = listPersons.stream().sorted(Comparator.comparing(Person::getName)).collect(Collectors.toList());

List<Person> sortedByLastName = listPersons.stream().sorted(Comparator.comparing(Person::getLastName)).collect(Collectors.toList());

List<Person> reverseSortedByLastName = listPersons.stream().sorted(Comparator.comparing(Person::getLastName).reversed()).collect(Collectors.toList());

Raj
  • 131
  • 6