List剔除重复元素的问题

zhuyouyong 2012-02-17 04:09:43
想实现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);

...全文
278 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuyouyong 2012-02-17
  • 打赏
  • 举报
回复
问题解决了,实在感谢大家的回复,因为数据库取值时出错了!
x060508 2012-02-17
  • 打赏
  • 举报
回复
可以新建一个空集合
然后把List集合一个个放入到新集合里
每次放入的时候判断新集合里是否有此元素
contains 方法
安特矮油 2012-02-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhuyouyong 的回复:]
想实现names中没有重复的元素这是自己写的一段代码,运行后仍旧有重复的元素,希望大家帮我指出错误!

Java code

//删除重复的用户名
Set<String> names = new HashSet<String>();
List<String> sendUserNames = new Arr……
[/Quote]
这写法太冗余了,
Set<String> set = new HashSet<String>();
set.addAll(userEventByFeedIdList);
--这个set里面就没有重复的了。
MiceRice 2012-02-17
  • 打赏
  • 举报
回复
总的来说,感觉楼主你引入List就是多余的。。。
Set<String> names = new HashSet<String>();
for(UserEvent ue : userEventByFeedIdList) {
names.add(ue.getSendUserName());
}
sendUserName = StringUtils.collToStr(names);
LPZLSDJF 2012-02-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhuyouyong 的回复:]
我要的是剔除重复元素!!不是计算List中的元素个数!StringUtils.collToStr(names);是项目封装的方法!
[/Quote]
你就不会再仔细想想
if(Collections.frequecy(list,元素)>1的时候说明元素重复,那就可以不必add了,所以在你循环后add进的新元素不久没有重复的了??) {
……………………
}
MiceRice 2012-02-17
  • 打赏
  • 举报
回复
看了下你的原始要求,有点纳闷,你的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());
「已注销」 2012-02-17
  • 打赏
  • 举报
回复
不应该呀,感觉你写的就对,我自己写的测试代码:

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了
zhuyouyong 2012-02-17
  • 打赏
  • 举报
回复
我想要大家帮我指出错在什么地方,或者该怎么写!麻烦了急用!
aotian16 2012-02-17
  • 打赏
  • 举报
回复
用map不行吗?
结贴是美德 2012-02-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xieliangliang1314 的回复:]
充分利用java提供的API: Collections.frequecy(list,元素);返回值是该元素在list里面有几个。
[/Quote]

好悲哀 好无奈 我懂的
zhuyouyong 2012-02-17
  • 打赏
  • 举报
回复
我不太清楚怎么过滤
names.addAll(sendUserNames);这段代码不可以么?
MiceRice 2012-02-17
  • 打赏
  • 举报
回复
借助HashSet来过滤一遍就行了,也就是循环处理List,依次检查该元素是否在HashSet中,有就说明重复删除掉,没有就将其放入HashSet。
zhuyouyong 2012-02-17
  • 打赏
  • 举报
回复
我要的是剔除重复元素!!不是计算List中的元素个数!StringUtils.collToStr(names);是项目封装的方法!
LPZLSDJF 2012-02-17
  • 打赏
  • 举报
回复
充分利用java提供的API: Collections.frequecy(list,元素);返回值是该元素在list里面有几个。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧