首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

一个觅重算法,求大家帮助(回复有分)

2012-10-18 
一个找重算法,求大家帮助(回复有分)现有如下list集合泛型为String,集合中元素如下{abc,dfg,erf,aef,dcf,er

一个找重算法,求大家帮助(回复有分)
现有如下list集合泛型为String,集合中元素如下{abc,dfg,erf,aef,dcf,ert,yyu,oop},现要求找出其中第一个字符
相同的元素即为重复元素,找出这些元素{abc,aef,dfg,dcf,erf,ert},要求循环遍历一次得出结果!希望会的大侠,
给予帮助!

[解决办法]
for example

Java code
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));
}
}
[解决办法]
感觉你还是自己想一下,然后说明你哪里不清楚,这样印象比较深刻

热点排行