Olá pessoal,
Procurei sobre o assunto no forum e vi que se implementa o metodo compareTo da interface Comparable ou compare da interface Comparator, gostaria de entender melhor a chamada a esse métodos, são sempre explicitas como algun exemplos que vi no forum ?
Mesmo assim estou confuso quanto ao seguinte código:
[code]package com.exercise.whizlabs;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
public class Generics3 {
/**
* @param args
*/
public static void main(String[] args) {
Set<Employee> set = new TreeSet<Employee>(new MyComparator<Employee>()); //linha 15 <--- Nao entendi
set.add(new Employee("Jacob",30));
set.add(new Employee("George",29));
set.add(new Employee("Daisy",40));
set.add(new Employee("Daisy",22));
for (Employee e : set) {
System.out.println(e);
}
}
}
class Employee{
String name;
int age;
Employee(String name, int age){
this.name = name;
this.age = age;
}
String getName(){
return name;
}
int getAge(){
return age;
}
public String toString(){
return name + " of age " + age;
}
}
class MyComparator implements Comparator {
public int compare(T obj1, T obj2){
String name1 = obj1.getName();
String name2 = obj2.getName();
if(!name1.equals(name2)){
return name1.compareTo(name2);
}
else
return obj1.age - obj2.age;
}
}[/code]
Nao vejo nenhuma chamada explícita ao compare da MyComparator e gostaria de entender como é feita essa chamada nesse codigo e também entender a linha 15, e porque nao funciona se reescrever a linha 15 para :