2016-03-12 2 views
-1

Я хочу подсчитать строки, которые повторяются более чем в массиве String в java. Один из способов, чтобы найти строку, как, чтоКак я могу пересчитать повторяющиеся строки в массиве в java?

String[] Array=new String[10]; 
String find; 
System.out.print("Enter Strings for Array: "); 

for(int i=0;i<Array.length;i++) { 
    Array[i]=input.next(); 
} 

System.out.print("Enter String to find"); 
find=input.next(); 

for(int i=0;i<Array.length;i++) { 
    if(find.equals(Array[i]) { 
     System.out.print("Found!"); 
    else 
     System.out.print("Not Found!"); 
    } 
} 

Но я хочу, чтобы искать повторяющиеся строки через петлю и найти Повторную струне себя, не получая входные данные от пользователя, чтобы найти.

+0

Возможный дубликат [Java массив, Поиск дублей] (http://stackoverflow.com/questions/3951547/java-array-finding-duplicates) –

ответ

0

Первая проблема, вы не компилируете код. Вы открываете блок для своего оператора if, но не закрывайте его перед оператором else.

Основываясь на вашем сообщении, кажется, что вы хотите подсчет слов в массиве. Тем не менее, ваш код подсказывает, что вы пытаетесь найти, существует ли строка в массиве. Я предполагаю, что это первая, и продолжай. Вместо подхода O (n * n) это можно сделать в O (n), используя Map.

String[] arr = {"ab","c","d","e","ab"}; 
Map<String, Integer> map = new HashMap<String, Integer>(); 

for(String word: arr) { 
    // if word is not in the map 
    if(!map.containsKey(word)) 
     map.put(word, 0); 
    map.put(word, map.get(word) + 1); 
} 

for(String word: map.keySet()) 
    System.out.println(word + " occurs " + map.get(word) + " times"); 
Смежные вопросы