日期:2014-05-20 浏览次数:20745 次
List<String> list = {abc, def...}; List<String> newList = new ArrayList<String>(); Map<String, List<String>> map = new HashMap<String, List<String>>(); for (String s : list) { String key = s.substring(0, 1); if (!map.containsKey(key) { map.add(new ArrayList<String>()); } List<String> tmp = map.get(key); tmp.add(s); if (tmp.size()==2) { //如果刚好是2个,则2个都保存到新集合 newList.addAll(tmp); } else if (map.get(key).size() > 2) { //如果大于2个,则保存本次循环的s newList.add(s); } }
------解决方案--------------------
真搞不懂你这到底是要干吗,说算法吧,你这又是list又是泛型 的,还要求遍历一次,看样子是还不能用list的API?
------解决方案--------------------
遍历放入一个set集合中,然后判断集合中是否此元素即可,并将重复元素输出
Set<String> set=new HashSet<String>();
for(int i=0;i<list.size();i++){
if(!set.contains(list.get(i).substring(0,1))){
set.add(list.get(i).substring(0,1));
//System.out.println(list.get(i));
}else{
System.out.println(list.get(i));
}
}
------解决方案--------------------
感觉你还是自己想一下,然后说明你哪里不清楚,这样印象比较深刻