想实现names中没有重复的元素这是自己写的一段代码,运行后仍旧有重复的元素,希望大家帮我指出错误!//删除重复的用户名
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);

解决方案 »

  1.   

    充分利用java提供的API:  Collections.frequecy(list,元素);返回值是该元素在list里面有几个。
      

  2.   

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

  3.   

    借助HashSet来过滤一遍就行了,也就是循环处理List,依次检查该元素是否在HashSet中,有就说明重复删除掉,没有就将其放入HashSet。
      

  4.   

    我不太清楚怎么过滤
     names.addAll(sendUserNames);这段代码不可以么?
      

  5.   

    不应该呀,感觉你写的就对,我自己写的测试代码: 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);输出:[123, 456, 123, 789]
    [123, 456, 789]
    或者你直接用names.add(ue.getSendUserName());放到Set里不也行吗,省的后面再addALl了
      

  6.   

    看了下你的原始要求,有点纳闷,你的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());
      

  7.   

    你就不会再仔细想想
    if(Collections.frequecy(list,元素)>1的时候说明元素重复,那就可以不必add了,所以在你循环后add进的新元素不久没有重复的了??) {
      ……………………
    }
      

  8.   

    总的来说,感觉楼主你引入List就是多余的
    Set<String> names = new  HashSet<String>();
    for(UserEvent ue : userEventByFeedIdList) {
        names.add(ue.getSendUserName());
    }
    sendUserName = StringUtils.collToStr(names);
      

  9.   

    这写法太冗余了,
    Set<String> set = new HashSet<String>();
    set.addAll(userEventByFeedIdList);
    --这个set里面就没有重复的了。
      

  10.   

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