日期:2014-05-20 浏览次数:20710 次
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