日期:2014-05-20  浏览次数:20738 次

List剔除重复元素的问题
想实现names中没有重复的元素这是自己写的一段代码,运行后仍旧有重复的元素,希望大家帮我指出错误!
Java code

//删除重复的用户名
                    Set<String> names = new  HashSet<String>();
                    List<String> sendUserNames = new ArrayList();
                    for(UserEvent ue : userEventByFeedIdList){
                        
                        sendUserNames.add(ue.getSendUserName());
                    }
                    names.addAll(sendUserNames);
                    sendUserName = StringUtils.collToStr(names);




------解决方案--------------------
充分利用java提供的API: Collections.frequecy(list,元素);返回值是该元素在list里面有几个。
------解决方案--------------------
借助HashSet来过滤一遍就行了,也就是循环处理List,依次检查该元素是否在HashSet中,有就说明重复删除掉,没有就将其放入HashSet。
------解决方案--------------------
不应该呀,感觉你写的就对,我自己写的测试代码:
Java code

        Set<String> nameSet = new HashSet<String>();
        List<String> list = new ArrayList<String>();
        list.add("123");
        list.add("456");
        list.add("123");
        list.add("789");
        System.out.println(list);
        
        nameSet.addAll(list);
        System.out.println(nameSet);

------解决方案--------------------
看了下你的原始要求,有点纳闷,你的names是个HashSet,里面的元素如果是String的话,怎么能重复的起来?

你试试看这段代码,难道你那边还能神奇的效果不一样?
HashSet<String> hs = new HashSet<String>();
hs.add(new String("123"));
hs.add(new String("123"));
hs.add(new String("123"));
hs.add(new String("123"));
System.out.println(hs.size());

------解决方案--------------------
探讨
我要的是剔除重复元素!!不是计算List中的元素个数!StringUtils.collToStr(names);是项目封装的方法!

------解决方案--------------------
探讨
想实现names中没有重复的元素这是自己写的一段代码,运行后仍旧有重复的元素,希望大家帮我指出错误!

Java code

//删除重复的用户名
Set<String> names = new HashSet<String>();
List<String> sendUserNames = new Arr……

------解决方案--------------------
可以新建一个空集合
然后把List集合一个个放入到新集合里
每次放入的时候判断新集合里是否有此元素
contains 方法