一个找重算法,求大家帮助(回复有分)
现有如下list集合泛型为String,集合中元素如下{abc,dfg,erf,aef,dcf,ert,yyu,oop},现要求找出其中第一个字符
相同的元素即为重复元素,找出这些元素{abc,aef,dfg,dcf,erf,ert},要求循环遍历一次得出结果!希望会的大侠,
给予帮助!
[解决办法]
for example
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));
}
}
[解决办法]
感觉你还是自己想一下,然后说明你哪里不清楚,这样印象比较深刻