Search code examples
javainputbox

Sorting an arraylist in Java language


I have an arraylist set up. I have input instuctions set up too, so that the user can enter one string, then one integer, then one string (the first name, the age, and the last name).

I need to sort the arraylist by the last name. The code I have entered so far is all under the main method:-

public static void main(String[] args) {
Name Name[] = new Name[50];
int count = 0;

for (int i=0; i<50; i++)
  NewName[i] = new Name();

//ADD NEW TO ARRAYLIST NAME
String FName = JOptionPane.showInputDialog("first name");
int age = Integer.parseInt(JOptionPane.showInputDialog("age"));
String LName = JOptionPane.showInputDialog("last name");
          NewName[count] = new Name(FName, age, LName);
count = count++;
}

//ITEMS SORT BY LAST NAME
//CODE FOR SORT GOES HERE

Solution

  • Take a look at Comparable, Comparator, Arrays.sort and Collections.sort

    import java.util.Arrays;
    
    
    class Name implements Comparable<Name> {
    
        private String lastName;
        //Other fields
    
        public Name(String lastName){
            this.lastName = lastName;
        }
    
        public int compareTo(Name o) {
            //Null checks etc
            return lastName.compareTo(o.lastName);
        }
        public String getLastName(){
            return lastName;
        }
        //Getter and setter methods
    }
    
    public class Test{
        public static void main(String[] args) {
            Name[] arr = new Name[]{new Name("AAC"), new Name("AAD"), new Name("AAA"),new Name("ABC"), new Name("AADDE")};
            Arrays.sort(arr);
            for(Name nm:arr){
                System.out.println(nm.getLastName());
            }
        }
    }