Hallo, wer erklärt mir folgendes Phänomen? Lasse ich die int Werte per Autoboxing in die Liste, ist es möglich im Comparator auf == zu prüfen.. Wieso? Es sind doch eigentlich Integer werde, denn sie sind nun in der Liste oder?
Code:
public class TestAutoBoxing {
private static final class IntegerComparator implements Comparator<Integer> {
private final String list;
public IntegerComparator(String listName) {
this.list = listName;
}
public int compare(Integer first, Integer second) {
int result = -1;
if (first > second) {
result = 1;
}
else if (first == second) {
System.out.println(this.list + " first == second ! ");
result = 0;
}
return result;
}
}
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(new Integer(4));
list.add(new Integer(10));
list.add(new Integer(24));
list.add(new Integer(4));
list.add(new Integer(45));
Comparator<Integer> naturalOrder = new IntegerComparator("Integer List");
List<Integer> list2 = new ArrayList<Integer>();
list2.add(4);
list2.add(10);
list2.add(24);
list2.add(4);
list2.add(45);
Comparator<Integer> naturalOrder2 = new IntegerComparator("Autoboxed List");
Collections.sort(list, naturalOrder);
Collections.sort(list2, naturalOrder2);
}
}