calcul principal:Les valeurs récurrentes dans la carte de hachage inutilement
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);
}
}
}
fonction sendDataToMap:
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....");
}
fonction Readmap:
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();
}
}
approche est simple, je lis les multiples indices de une clé de chaîne et l'ajouter à la carte avec String,ArrayList<Pair<Integer, Integer>>
. Je sais que j'ai fait une petite erreur soit dans le calcul principal ou en lisant la carte qui entraîne la duplication des valeurs.
sortie Exemple:
can | 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
soulignées répète partie.
Point est, je ne veux pas écrire plusieurs valeurs au premier lieu et si cela ne se passe ici alors je ne veux pas lire les valeurs multiples.
Une aide?
Édition 1: Entrées: Une chaîne (fondamentalement n'importe quelle chaîne) qui est en cours d'exécution sur l'espace. Par exemple: Bonjour comment ça va? => [ 'Bonjour', 'comment', 'sont', 'vous?]
Une ligne avant le calcul principal:
mKeys = splitTextToArray(str_mFormatedString);
et la fonction 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]? –
S'il vous plaît lire le code et la légende ci-dessous, c'est simple à comprendre. –
Comme ci-dessous, utilisez simplement un ensemble. Un ArrayList ne se limite pas à des valeurs uniques –