package javacodebook.collections.collection.search; import java.util.*; public class SearchExamples { public static void main(String[] args) { ArrayList list = new ArrayList(); //Ein Array mit 1000 aufsteigenden Zahlen wird erzeugt for(int i = 0; i < 1000; i++) list.add(new Integer(i)); //Einfache Suche nach dem richtigen Zahlenwert int pos = Collections.binarySearch(list, new Integer(327)); System.out.println("Position " + pos);//große Überraschung ist das nicht list.clear(); //Jetzt werden Strings mit einem Zahlenwert ergänzt for(int i = 0; i < 1000; i++) list.add("Nummer" + i); //Ein spezieller Comparator sorgt dafür, dass nur die Zahlenwerte //verglichen werden Comparator numberComparator = new Comparator() { //die Compare-Methode schneidet vom in der Liste vorhandenen String //jeweils den vorderen Teil mit dem String ab, so dass nur die //Zahl übrig bleibt public int compare(Object o1, Object o2) { String s = (String)o1; Integer intValue = new Integer(s.substring(6, s.length())); return intValue.compareTo((Integer)o2); } //die equals-Methode ist für die Suche unwichtig public boolean equals(Object o1, Object o2) { return o1.equals(o2); } }; //Auch jetzt wird wieder nach einer Zahl gesucht, allerdings diesmal in //einer Liste mit String-Werten, und mit einem geeigneten Comparator pos = Collections.binarySearch(list, new Integer(327), numberComparator); System.out.println("Position " + pos); } }