public class SortArray {
public static void main(String[] args) {
List<Digit> listDigit = new ArrayList<Digit>();
Digit digit1 = new Digit(1, "XXX");
Digit digit2 = new Digit(10, "XXX");
Digit digit3 = new Digit(12, "XXX");
Digit digit4 = new Digit(2, "XXX");
Digit digit5 = new Digit(24, "XXX");
listDigit.add(digit2);
listDigit.add(digit3);
listDigit.add(digit1);
listDigit.add(digit4);
listDigit.add(digit5);
for (Digit digit : listDigit) {
System.out.println("Sort Before - Digit: "+digit.getDigit() +" Name:"+digit.getName());
}
System.out.println(" -------------------//-------------------------");
Collections.sort(listDigit, new SortbyDigit());
for (Digit digit : listDigit) {
System.out.println("Sort After - Digit: "+digit.getDigit() +" Name:"+digit.getName());
}
}
public class Digit {
private final int digit;
private final String name;
public Digit(int digit, String name) {
this.digit = digit;
this.name = name;
}
public int getDigit() {
return digit;
}
public String getName() {
return name;
}
@Override
public int hashCode() {
int hash = 7;
return hash;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Digit other = (Digit) obj;
if (this.digit != other.digit) {
return false;
}
if (!Objects.equals(this.name, other.name)) {
return false;
}
return true;
}
@Override
public String toString() {
return "Digit{" + "digit=" + digit + ", name=" + name + '}';
}
}
public class SortbyDigit implements Comparator {
@Override
public int compare(Digit a, Digit b)
{
return a.getDigit() - b.getDigit();
}
}
Sort Before - Digit: 10 Name:XXX
Sort Before - Digit: 12 Name:XXX
Sort Before - Digit: 1 Name:XXX
Sort Before - Digit: 2 Name:XXX
Sort Before - Digit: 24 Name:XXX
-------------------//-------------------------
Sort After - Digit: 1 Name:XXX
Sort After - Digit: 2 Name:XXX
Sort After - Digit: 10 Name:XXX
Sort After - Digit: 12 Name:XXX
Sort After - Digit: 24 Name:XXX
Comparator. Plenty of literature around.