除去Vector中重复的值?

jinsanqi 2003-07-29 04:56:30
同事问我个问题,想把Vector中重复的值给去掉。
他自己写了个方法,用循环加比较一个个检查,并且写错了也检查不出错误在哪。
我换了个思路,给他写了一个:
Vector v=new Vector();
v.add("123");
v.add("456");
v.add("123");
HashMap h=new HashMap();
for(int i=0;i<v.size();i++)
h.put(v.get(i),v.get(i));
Collection c=h.values();
我用了HashMap的一个特性,把相同的值给去掉了。最终c的值应该是{[123],[456]}
因为在HashMap里的索引和值都放了相同的值。因此我觉得数据多的话是不是会很低效。
不知道哪位牛人有更好的实现方法,请指教之!谢谢!
...全文
331 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinsanqi 2003-07-29
  • 打赏
  • 举报
回复
Vector v=new Vector();
Vector c=new Vector();
v.add("123");
v.add("456");
v.add("123");
for(int i=0;i<v.size();i++){
if(!c.contains(v.get(i))
c.add(v.get(i));
}

to geyf:一直搞不懂HashCod方法有何用?you know?
jinsanqi 2003-07-29
  • 打赏
  • 举报
回复
andyzhu98果然是成熟的男人,此招妙也。多谢各位了:>
jkit 2003-07-29
  • 打赏
  • 举报
回复
不好意思我写的没有执行过,String类实现了hashCode和equals两个方法,所以可以作为键值。不过从通用的角度来看,还是只能用循环来一个个判。
geyf 2003-07-29
  • 打赏
  • 举报
回复
****他自己写了个方法,用循环加比较一个个检查,

他的vector中方的不是简单的string吧,如果是自己写的类,
看看是不是没有实现这两个方法:
public boolean equals(Object o){ //比如类相等的条件判断
}
public int hashCode(){
}
knight_qmh 2003-07-29
  • 打赏
  • 举报
回复
用HashSet
tpz_stamp 2003-07-29
  • 打赏
  • 举报
回复
遍历比较是唯一的方法,没有所谓的高效手段。
andyzhu98 2003-07-29
  • 打赏
  • 举报
回复
用contains方法不就完了,那里有那么麻烦!
tpz_stamp 2003-07-29
  • 打赏
  • 举报
回复
结果应该还是能驱除重复值。
String类实现了hashCode和equals两个方法,所以可以作为键值。
如果是其他没有实现这两个方法的对象,此法不通,不能取得预期效果。
tpz_stamp 2003-07-29
  • 打赏
  • 举报
回复
jkit(郁闷的程序员)
你写的执行过?结果如你所述?
jkit 2003-07-29
  • 打赏
  • 举报
回复
好像只能用循环来判equals。
你用HashMap其实不安全,你用元素本身做key不好, 比如v.add(new String("123"));
v.add(new String"456"));v.add(new String("123"));的话,最终c的值应该是{[123],[456],[123]},显然没有起到消除重复值的效果。

62,614

社区成员

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

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