★★★★★挑战极限,显示你的功力,一个简单而又常见的算法问题★★★★★

linuxyf 2005-01-12 10:13:51
我有10000个字段名,现在放在一个vector里,现在我要检查是否有重名?如何检查,效率能达到最高,我目前的解决方案是:

循环比较,第一个字段名和余下的9999个比较,第二个和余下的9998个比较。。。。。。
这种方法效率比较低下。

还有没有其它的方法???

高手们进来讨论讨论?
...全文
156 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
vgvg 2005-01-12
  • 打赏
  • 举报
回复
import java.util.*;

class TestVector{
public static void main(String[] arg){
ArrayList v=new ArrayList();
v.add("a");
v.add("b");
v.add("c");
v.add("d");
v.add("a");
v.add("e");
v.add("b");
v.add("f");
v=new ArrayList(new HashSet(v));
for(int i=0;i<v.size();i++)
System.out.println(v.get(i));
}
}
hanabi 2005-01-12
  • 打赏
  • 举报
回复
把Vector转成Set,报异常就有重复的值
vgvg 2005-01-12
  • 打赏
  • 举报
回复
Set可以过滤掉相同的对象.
如果放在ArrayList里会更快.
bboonnee 2005-01-12
  • 打赏
  • 举报
回复
呵呵,楼上的
这样做重名会有什么显示呢
异常么??
treeroot 2005-01-12
  • 打赏
  • 举报
回复
楼主的比较复杂度是 o(n*n);
上面的代码复杂度是 o(n);

treeroot 2005-01-12
  • 打赏
  • 举报
回复
Vector vector=...;
一条语句就可以了,别小看,效率非常高,比楼少的快100倍应该没问题
vector=new Vector(new HashSet(vector));

62,614

社区成员

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

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