日期:2014-05-20 浏览次数:20897 次
List list = getList();
Set set1 = new HashSet();
for (int i = 0; i < list.size(); i++) {
Person p = (Person)list.get(i);
set1.add(p.getAgeCode()+"-"+p.getItemCode());
}
Map result = new HashMap();
Iterator it = set1.iterator();
while(it.hasNext()){
int j = 1;
String item = it.next().toString();
for (int i = 0; i < list.size(); i++) {
Person p = (Person)list.get(i);
if(item.equals(p.getAgeCode()+"-"+p.getItemCode())){
result.put(p.getAgeCode()+"-"+p.getItemCode(),j++);
}
}
}
Set set2 = result.keySet();
Iterator it2 = set2.iterator();
while(it2.hasNext()){
String key = it2.next().toString();
System.out.println("result:"+key+":"+result.get(key));
}
public class KeyCounter extends HashMap<String, Integer> {
private void addKeyCount(String key) {
if (!containsKey(key)) {
put(key, 1);
} else {
put(key, get(key) + 1);
}
}
}
------解决方案--------------------
不好意思,上面的private void addKeyCount(String key)
------解决方案--------------------
楼主加油.....................
------解决方案--------------------
其实楼主的那个方法还可以,楼主太精益求精了,加油
------解决方案--------------------
楼主的问题用一次循环,一个hashmap就可以搞定,算法思想如下:
1、循环遍历集合中的对象
2、在循环中做如下处理:
1>构造hashmap的key
2>判断hashmap中是否存在key,如果不存在则该key对应的value为1,如果存在则将该key对应的 value加1