Sie können Hashing verwenden, um Ihre Aufgabe in O (1) zu erreichen. Bitte lesen Sie diese article, um ein tieferes Verständnis über Hashing zu erhalten.
Da Sie Java verwenden, können Sie HashMap verwenden, um Ihre Aufgabe zu erfüllen. Man beachte, dass die Zeitkomplexität im ungünstigsten Fall für die hashing
Technik O (log n) ist, aber im Durchschnitt ist es O (1). Wenn Sie mehr über Hashtabellen und amortisierte Analysen erfahren möchten, gehen Sie bitte durch diese article.
Codebeispiel: Sie können einen Class
mit den erforderlichen Attributen erstellen und equals
und hashCode
Verfahren wie folgt implementieren. [Lesen Java collections - hashCode() and equals()]
class Rating {
public int user_id; // id of the user who rated
public int item_id; // id of the item being rated
public Rating(int user_id, int item_id) {
this.user_id = user_id;
this.item_id = item_id;
}
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof Rating)) {
return false;
}
Rating ratingObj = (Rating) o;
return ratingObj.user_id == user_id
&& ratingObj.item_id == item_id;
}
@Override
public int hashCode() {
int result = 17;
result = 31 * result + user_id;
result = 31 * result + item_id;
return result;
}
}
Dann speichern Werte in HashMap
wie folgt:
public static void main(String[] args) {
HashMap<Rating, Integer> ratingMap = new HashMap<>();
Rating rt = new Rating(1, 5); // user id = 1, item id = 5
ratingMap.put(rt, 3);
rt = new Rating(1, 2); // user id = 1, item id = 2
ratingMap.put(rt, 4);
rt = new Rating(1, 3); // user id = 1, item id = 3
ratingMap.put(rt, 5);
// now search in HashMap
System.out.println(ratingMap.get(new Rating(1, 3))); // prints 5
}
Ich bin verwirrt. Liest du aus einer Datei oder einer verknüpften Liste? – shmosel
Ich denke, die Antwort hängt davon ab, wie Sie Ihre Datei erstellen, und die Annahmen, die Sie daraus machen. Zum Beispiel, wenn es sortiert ist, könnten Sie wahrscheinlich eine BST verwenden. Möglicherweise müssen Sie jedoch immer noch die gesamte Datei lesen oder die gesamte Datei im Speicher ablegen. – Zymus
Können Sie Inhalte der Datei in den Speicher laden und eine effizientere Datenstruktur wie eine Hash-Tabelle oder etwas verwenden? – spektr