My code is as follows:
Person.java
package com.example;
import java.util.Comparator;
public class Person implements Comparator<Person> {
String name;
int emp_id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getEmp_id() {
return emp_id;
}
public void setEmp_id(int emp_id) {
this.emp_id = emp_id;
}
public Person(String name,int emp_id) {
this.name = name;
this.emp_id = emp_id;
}
}
PersonSort.java
package com.example;
import com.example.Person;
import java.util.*;
public class PersonSort implements Comparator<Person> {
public int compare(Person arg0, Person arg1) {
return arg0.getName().compareTo(arg1.getName());
}
}
PersonDetails.java
package com.example;
import java.util.*;
public class PersonDetails {
public List<Person> enter() {
List<Person> list = new ArrayList<Person>();
list.add(new Person("D", 1));
list.add(new Person("A", 56));
list.add(new Person("G", 43));
list.add(new Person("C", 32));
return list;
}
public static void main(String[] args) {
PersonDetails details = new PersonDetails();
List<Person> list = details.enter();
Collections.sort(list, new PersonSort());
Iterator<Person> it = list.iterator();
while (it.hasNext()) {
Person p = it.next();
System.out.println(p.getName() + " " + p.getEmp_id());
}
}
}
In PersonSort.java we are using compareTo to compare two strings. Is there any alternate way like what we do when we compare two integers? For instance below to compare two employee ids:
public int compare(Person arg0, Person arg1) {
if (arg0.emp_id == arg1.emp_id)
return 0;
else if (arg0.emp_id > arg1.emp_id)
return 1;
else
return -1;
}
Can there be any logic like this to compare two strings without calling compareTo?