检测list内有几组相同元素如list里有{"aaa","bbb","aaa","bbb","ccc","ccc","ccc" }
想要得出 aaa有2个,bbb有2个,ccc有3个
这样的方法有吗?
想要得出 aaa有2个,bbb有2个,ccc有3个
这样的方法有吗?
解决方案 »
- 各位帮帮看个小程序,关于求101到200的质数小毛病
- JDBC的Connection关闭与开启问题
- 关于javabean 与list的问题,我要哭了
- 从一开始输出到一百
- 急!Java中文件保存出错!!!请高手近来一看
- 高分求高手指点!!急!急!急!路由器上LS选路算法和DV选路算法的实现!高手进啊!
- jTable1.setSelectionModel(sm);这句代码有错吗?
- 大家帮帮忙,怎么能实现这里的提问按钮的这种功能,点一次就不可用?
- Jbuilder第一次编译说缺包,引入通过!然后把原来引入的注释,又通过!上帝,救我!
- 请教java有没有类似vb中type的用法
- 基本数据类型如int a=3到底是引用还是赋值
- IE中设置将JRE用于applet可以改变JRE的版本么?
key就是"aaa","bbb"等,value就是数值
String str="aaa";
if(map.get(str)!=null)
{
把值取出来加+1;
把值放进去.
}else
{
直接把值放进去,value为1;
}最后遍历map就可以.
是其他类型对象的话就要自己写比较器,比较麻烦,还不如用2楼的方法
public static Map getObjectAndCountFromList(List list) {
Map map = new HashMap();
int position = 0;
Collections.sort(list);
for (int i = 1; i < list.size(); i++) {
if (!list.get(i).equals(list.get(i - 1))) {
map.put(list.get(i - 1), i - position);
position = i;
}
}
map.put(list.get(list.size() - 1), list.size() - position);
return map;
}
String[] s ={"aaa","bbb","aaa","bbb","ccc","ccc","ccc" } ;
List list = Arrays.asList(s);
int countA = 0;
int countB = 0;
int countC = 0;
for(int i=0;i<list.size();i++){
if("aaa".equals(list.get(i))){
countA++;
}if("bbb".equals(list.get(i))){
countB++;
}if("ccc".equals(list.get(i))){
countC++;
}
}
System.out.println(countA+" "+countB+" "+countC);
}
结果:2 2 3