在这种情况下,当我每次运行这个for循环时,我该如何将键i递增1呢?按照我目前设置的方式,所有的元素都只映射到1。我试图找出每个数字出现的次数。我已经在list.get(i)之后的空白处尝试了+1,但再次只将每个元素映射到1。谢谢。
List<Integer> list = new ArrayList<Integer>();
HashMap<Integer,Integer> Mode = new HashMap<Integer, Integer>();
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
list.add(arr[i][j]);
}
}
System.out.println(list);
int count = 1;
for(int i = 0; i < list.size(); i ++) {
Mode.put(list.get(i), );发布于 2012-01-20 12:26:21
如果你有选择,你可能会发现使用Guava的Multiset会更容易一些。
Multiset<Integer> seen = HashMultiset.create();
for (int[] row : arr) {
for (int elem : row) {
seen.add(elem); // none of that nasty dealing with the Map
}
}
// you can look up the count of an element with seen.count(elem)
E mostCommon = null;
int highestCount = 0;
for (Multiset.Entry<Integer> entry : seen.entrySet()) {
if (entry.getCount() > highestCount) {
mostCommon = entry.getElement();
highestCount = entry.getCount();
}
}
return mostCommon; // this is the most common element发布于 2012-01-20 11:31:24
您需要在此处指定Key。
for(int i = 0; i < list.size(); i++) {
int value=list.get(i);
if(!Mode.containsKey(value))
Mode.put(value,1);
else
Mode.put(value,Mode.get(value)+1);
}发布于 2012-01-20 11:31:53
根据你的评论,
for(int i = 0; i < list.size(); i ++) {
if(Mode.containsKey(list.get(i)) ){
Integer count = Mode.get(list.get(i));
Mode.put(list.get(i), ++count);}
else
Mode.put(list.get(i), 1);https://stackoverflow.com/questions/8936413
复制相似问题