2012-10-18 52 views
3

任何人都可以帮助我吗?我需要编写一个程序,在arraylist中有10个元素,我需要找出它有多少重复值,并计算并显示值。在arraylist中查找重复元素并显示

例如:说我有

list = {"stack", "overflow", "stack", 
     "yahoo", "google", "msn", 
     "MSN", "stack", "overflow", "user" } 

的结果应该是:

stack = 3 
overflow = 2 
google = 1 
msn = 2 
yahoo =1 
user = 1 
+0

请提供一个例子,说明你在发布SO之前已经尝试了什么。 – kdmurray

回答

3

使用hashmap
这样的:

Map<String, Integer> occurrencies = new HashMap<String, Integer>(); 
for (String word : list) { 
    occurrencies.put(word, occurrencies.containsKey(word) 
    ? occurrencies.get(word) + 1 : 1); 
} 
for (Entry<String, Integer> entry : occurrencies.entrySet()) { 
    System.out.println("Word: "+entry.getKey() 
        + ", occurences: "+entry.getValue()); 
} 
5

使用Google Guava库的MultiSet。它支持添加多个元素,并计算多重集包含的每个元素的出现次数。

Multiset<String> wordsMultiset = HashMultiset.create(); 
wordsMultiset.addAll(words); 
for(Multiset.Entry<String> entry : wordsMultiset.entrySet()){ 
    System.out.println("Word : "+entry.getElement()+" count -> "+entry.getCount()); 
} 
+2

Yup - *比使用HashMap的所有建议更简单... –

1

使用HashMap

Map<String, Integer> freqMap = new HashMap<String, Integer>(); 
1

创建Map<String, Integer>,然后遍历您ArrayList

然后为每个元素: -

  • 如果是在地图已经存在,由1
  • 增加该元素的Integer值。如果它不存在,添加元素与的1
2
Map<String, Integer> frequency = new HashMap<String, Integer>(); 
for (String element : list) { 
    if (frequency.contains(element)) { 
     frequency.put(element, frequency.get(element) + 1); 
    } 
    else { 
     frequency.put(element, 1); 
    } 
} 
for (Map.Entry<String, Integer> entry : frequency.entrySet()) { 
    System.out.print(entry.getKey() + " = " + entry.getValue() + " "); 
} 
System.out.println(); 
5

一个initial Integer值使用HashMap中。这里是一个简单的实施

List<String> strings = new ArrayList<String>(); 
strings.put("stack", "overflow", "stack", "yahoo", "google", "msn", "MSN", "stack", "overflow", "user"); 

Map<String, Integer> counts = new HashMap<String, Integer>(); 

for (String str : strings) { 
    if (counts.containsKey(str)) { 
     counts.put(str, counts.get(str) + 1); 
    } else { 
     counts.put(str, 1); 
    } 
} 

for (Map.Entry<String, Integer> entry : counts.entrySet()) { 
    System.out.println(entry.getKey() + " = " + entry.getValue()); 
} 
+0

非常感谢所有人.. –

+0

简单和感谢您的帮助:) –