2016-12-21 3 views
1

Früher habe ich verwenden bin zu eine binäre Suche nach einer sortiert ausführen zu können Liste von, sagen wir, String s oder Integer s, mit Code entlang der Linien von:Wie Collections.binarySearch() in einem CodenameOne Projekt

Vector<String> vstr = new Vector<String>(); 
// etc... 
int index = Collections.binarySearch (vstr, "abcd"); 

ich bin mir nicht klar, wie codenameone Griffe Standard-Java-Methoden und Klassen, aber es sieht so leicht behoben werden könnte, wenn Klassen wie Integer und String (oder die codenameone Versionen dieser) die Comparable Schnittstelle implementiert.

Edit: Ich sehe jetzt, dass Code in den folgenden Zeilen die Arbeit machen wird.

int index = Collections.binarySearch(vstr, "abcd", new Comparator<String>() { 

    @Override 
    public int compare(String object1, String object2) { 
     return object1.compareTo(object2); 
    } 
}); 

Hinzufügen der Comparable-Schnittstelle (auf die verschiedenen primitiven „Wrapper“) auch auch leichter machen würde, wäre es Collections.sort zu verwenden (eine weitere sehr nützliche Methode :-))

Antwort

0

Sie können auch sortieren mit einem Komparator Aber ich stimme zu, dies ist eine der wichtigen Verbesserungen, die wir in den nativen VMs auf den verschiedenen Plattformen persönlich zur Verfügung stellen müssen this is my biggest peeve in our current VM.

Können Sie eine RFE darauf einreichen und es als Kommentar im Number Problem erwähnen?

Wenn wir diese Änderung tun, könnte auch beides tun.

+0

Ich habe einen Kommentar zum 'Number' Problem hinzugefügt. Ich bin neu in Github und war mir nicht sicher, wo/wie ich die Notwendigkeit von "String" erwähnen sollte, um vergleichbar zu sein, also entschuldige mich, wenn ich Dinge verdummte! – flewby

+0

Danke, das ist gut. Ich hatte gehofft, dass ich das vor 3,6 rausbekomme, aber wir werden es wahrscheinlich früh im 3.7 Zyklus machen. –