Ich muss elem
finden, die element
entsprechen würde.
Mein Programm funktioniert, aber es ist nicht effizient. Ich habe eine sehr große ArrayList<Obj> pairs
(mehr als 4000 Elemente) und ich benutze eine binäre Suche, um passende Indizes zu finden.Binäre Suche über eine Liste von Paaren
public int search(String element) {
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < pairs.size(); i++) {
list.add(pairs.get(i).getElem());
}
return index = Collections.binarySearch(list, element);
}
Ich frage mich, ob es eine effizientere Art und Weise ist eine Schleife als die Verwendung der Hälfte der Arraylist-Paare in eine neue Arraylist Liste zu kopieren. Constructor für Obj: Obj x = new Obj(String elem, String word);
Ja - desto effizienter Weg ist, binäre Suche für Ihre Paar Liste selbst und nicht erstellen Sie eine Kopie Ihrer Liste jedes einzelne Mal, wenn Sie suchen() aufrufen –
Verwenden * schreiben andere * ['binarySearch()'] (https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#binarySearch-java.util.List-T-java.util. Comparator-) -Methode und stellen Sie einen [Comparator] (https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html) bereit, um die Listenelemente direkt zu vergleichen. – Andreas