Haupt Berechnung zu wiederholen:Werte in der Hash-Karte unnötig
for (String keyElement : mKeys) {
int index = str_mFormatedString.indexOf(keyElement);
sendTheDataToMap(keyElement, page, index);
while (index >= 0) { // indexOf returns -1 if no match found
index = str_mFormatedString.indexOf(keyElement, index + 1);
if (index >= 0) {
sendTheDataToMap(keyElement, page, index);
}
}
}
sendDataToMap Funktion:
private void sendTheDataToMap(String key, int page, int index) {
Pair mPair = new Pair(page, index);
map.putIfAbsent(key, new ArrayList<>());
map.get(key).add(mPair);
// System.out.println("Entry added to the map....");
}
Readmap Funktion:
private void readMap() {
for (Map.Entry<String, ArrayList<Pair<Integer, Integer>>> ee : map.entrySet()) {
String key = ee.getKey();
ArrayList<Pair<Integer, Integer>> values = ee.getValue();
// Process the values
System.out.print(key + " | ");
for (Pair value : values)
System.out.print(" " + value.getPage() + "." + value.getIndex());
System.out.println();
}
}
Ansatz ist einfach, las ich die mehreren Indizes ein Schlüssel aus Zeichenfolge und fügen Sie es in die Karte mit String,ArrayList<Pair<Integer, Integer>>
. Ich weiß, dass ich einen kleinen Fehler bei der Hauptberechnung oder beim Lesen der Karte gemacht habe, was zu einer Duplizierung von Werten führt.
Beispiel Ausgabe:
Dose | 5,167 5,223 5,167 5,223 7,157 7,338 7,751 7,157 7,338 7,751 7,157 7,338 7,751 15,558 16,209 16,436
hervorgehoben Wiederholungsteil.
Punkt ist, ich nicht schreiben wollen mehrere Werte an erster Stelle und wenn das nicht hier dann passiert Ich will nicht mehrere Werte lesen.
Irgendwelche Hilfe?
Bearbeiten 1: Eingaben: Eine Zeichenfolge (im Grunde jede Zeichenfolge), die auf Platz verschoben wird. Für ex: Hallo, wie geht es dir? => [ 'Hallo', 'wie', 'sind', 'du?']
Eine Zeile vor Haupt Berechnung:
mKeys = splitTextToArray(str_mFormatedString);
und die Funktion splitTextToArray()
private ArrayList<String> splittingTextToArray(String formattedTextInput) {
String[] tempKeys = formattedTextInput.split("\\s+");
//convert to Arraylist
ArrayList<String> mKeys = new ArrayList<>(Arrays.asList(tempKeys));
return mKeys;
}
........... [MCVE]? –
Bitte lesen Sie den Code und die Beschriftung unten, es ist einfach zu verstehen. –
Verwenden Sie wie unten einfach ein Set. Eine ArrayList beschränkt sich nicht auf eindeutige Werte –