2017-06-15 8 views
0

Ich brauche alle Indexnummern, in denen ich eine Übereinstimmung des Schlüsselwortes "Artikel" bekommen werde & Ich möchte auch den Zähler 'indexoccurencecounter' nur erhöhen, wenn ich eine Übereinstimmung erhalte .Abrufen der Indizes aller Elemente, die einen Wert enthalten

List<String> valueslist = new ArrayList<String>(); 
valueslist.add("Articles"); 
valueslist.add("Vals"); 
valueslist.add("Articles"); 
valueslist.add("Toast"); 

String key="Articles"; 

System.out.println("List contents having values are: "+valueslist); 
int ind=0; 
int indexoccurencecounter=0; 
for (int i=0;i<valueslist.size();i++){ 
    ind=valueslist.indexOf(key);  
    if (ind>=0){ 
     indexoccurencecounter++; 
    } 
} 
System.out.println("Index's of the key "+key+" is: "+ind); 
System.out.println("The key specified appears "+indexoccurencecounter+" times in the result links"); 

Mein obigen Code ist mir falsche Ausgabe geben, ich erwarte die Ausgabe wie unten zu sein:

List contents having values are: [Articles, Vals, Articles, Toast] 
Index's of the key Articles is: 0,2 
The key specified appears 2 times in the result links 

Antwort

2

Da mehrere Indizes übereinstimmen, int ind nicht verfolgen sie alle halten können. Es konnte nur einen verfolgen. Ich schlage vor, Sie erstellen eine List<Integer> Indizes. Ein nützlicher Nebeneffekt dabei ist, dass Sie die Vorkommen — nicht mehr zählen müssen, können Sie einfach die size() Methode der Liste verwenden.

List<String> values = new ArrayList<>(); 
values.add("Articles"); 
values.add("Vals"); 
values.add("Articles"); 
values.add("Toast"); 

String searchTerm = "Articles"; 

List<Integer> matchingIndices = new ArrayList<>(); 

for (int i = 0; i < values.size(); i++) { 
    String candidate = values.get(i); 
    if (candidate.indexOf(searchTerm) >= 0) { 
     matchingIndices.add(i); 
    } 
} 

int numberOfMatches = matchingIndices.size(); 

System.out.println("Values: " + values); 
System.out.println("Indexes of the key '" + searchTerm + "': " + matchingIndices); 
System.out.println("The key appears " + numberOfMatches + " times."); 

Produziert:

Values: [Articles, Vals, Articles, Toast] 
Indexes of the key 'Articles': [0, 2] 
The key appears 2 times. 
+0

Perfect! Vielen Dank... –

Verwandte Themen