2017-07-25 3 views
1

In meinem adapter von recyclerView vergleiche ich bin zwei Liste wie unten:Binary Suche auf benutzerdefinierte Liste - android

for (int i = 0; i < existImages.size(); i++) { 
    if (jsonInstagramList.get(position).getId().equalsIgnoreCase(existImages.get(i).getImageID())) { 
    holder.insertedProduct.setVisibility(View.VISIBLE); 
    break; 
    } else { 
    holder.insertedProduct.setVisibility(View.GONE); 
    } 
} 

existImages ist private List<ExistImage> existImages; und jsonInstagramListprivate List<Node> jsonInstagramList; ist.

Wie kann ich von binary search für die Beschleunigung bei dieser Suche oder andere Möglichkeiten verwenden?

Antwort

1

Abhängig von Ihrem Kontext könnte dies ziemlich einfach sein.

Es wurde bereits eine binäre Suche innerhalb der Collections-Klasse implementiert (Link zu javadoc). Also nennst du einfach diese Methode.

Natürlich beachten:

Sucht der angegebene Liste für das angegebene Objekt des binären Suchalgorithmus. Die Liste muss in aufsteigender Reihenfolge nach der natürlichen Reihenfolge ihrer Elemente sortiert werden ...

Das bedeutet, dass Ihre Liste bereits sortiert sein sollte. So ist die wirkliche Antwort auf erste an Ihrer aktuellen Schleife aussehen:

jsonInstagramList.get(position).getId().equalsIgnoreCase(existImages.get(i).getImageID() 

zu finden, dass man einfach nicht diese in eine binäre Suche drehen kann.

Mit anderen Worten: wenn dieser Code zu Elemente findet so oft genannt, dass es binäre Suche erforderlich ist - dann haben Sie an Ihre Daten im Voraus vorzubereiten.

Bedeutung: binäre Suche findet einen Schlüssel innerhalb einer sortierten Liste von Elementen des gleichen Typs. Also müssen Sie zuerst erstellen eine Liste, die die Dinge enthält, nach denen Sie suchen möchten!

+0

Wie kann ich von binarySearch auf zwei Listen verwenden? –

+1

Sie haben ein Update erhalten. Und die wirkliche Antwort hier: Sie sollten wahrscheinlich zurücktreten und lesen, wie/was binäre Suche. Dein Kommentar impliziert, dass du davon ausgehst, dass dies eine magische Sache ist, die auf irgendetwas angewendet werden kann. Und das ist nicht der Fall. – GhostCat

Verwandte Themen