请问如何确保List中的数据没有重叠的? 前提是需要保持有序性,所以不能采用Set如果对List中的每个值都遍历List,来判断List中是不是有重叠的值,效率太低了,不能采用判断是不是重叠是根据对象的某一个字段来判断的请问,有没有什么比较好的办法?最好效率比较高 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Set的确有几个实现可以保持有序,好像LinkedHashSet也可以保持有序但是因为我这个需求是基于Vector的实现,本身已经有几个类似get(int i)的方法,所以不能改变对外的api,用Set的话,能实现吗? 首先你的List里面存放的是什么类型的对象而且重复值 到底是 对象内存一样 还是紫荆定义的某几个属性相同就是同一个对象contains 应该也是遍历 你最好在list里面放一个 标志对象 比如这个对象存储了 List里面其他对象的标志位 在插入之前先对调用标志对象的方法看是不是有重复值 就可以避免遍历 List了 将List中的数据导入SET,然后再导出来不就可以了~~SET相当于过滤器了 个人觉得List.contains()就挺好。。 第一,Set也可以保持有序。第二,要避免重复,不遍历成员是不可能的,Set的内部也是采用遍历的。第三,要避免重复,你必须为成员类定义equals()方法(最好同时定义hashCode()方法和compareTo()方法),String对象除外,因为String类已经对这些做了很好的定义了。 To interpb:正在试验你说的标志位的方法 避免重复,你用Hashtable类,不是挺好吗 add的时候加个判断if (list.contains(obj)){//如果包含了一个重复的对象,就不加} 请改成LinkedHashSetTreeSet会重新排序的。 public boolean havaSameElement(){ Map map=new HashMap(); List list= new YourList(); for(int i=0;i<list.size();i++){ Object ob=list.get(i); if(map.containsKey(ob)){ return false; }else{ map.put(ob,""); } } return true; } 依据字段来判断的话。上面的程序改动一点就可以了:Object[] object=(Object[]) list.get(i);String ob=(String) object[2]; collections.sort(List ,Compare);collections.b...search(List,.....); SQL 掉课了怎么办· 关于java socket(tcp)的问题 java 程序如何做加密狗呢? 有关Swing中JLabel的Icon问题! 困扰多时的一个线程和swing应用问题。 每次启动java程序,是个进程还是个线程啊??? 帮帮忙给看看 我用了urlConnection对象联接某个http的地址,但是有时候页面会连接很慢,用什么办法控制接续时间,设定timeout之类的东西,谢谢 在线等待:写JNI的资料 每个人都说JBuilder比Visual J++好,但是。 JDialog 如何控制最大 size? Java异常类
第二,要避免重复,不遍历成员是不可能的,Set的内部也是采用遍历的。
第三,要避免重复,你必须为成员类定义equals()方法(最好同时定义hashCode()方法和compareTo()方法),String对象除外,因为String类已经对这些做了很好的定义了。
正在试验你说的标志位的方法
if (list.contains(obj)){//如果包含了一个重复的对象,就不加}
TreeSet会重新排序的。
Map map=new HashMap();
List list= new YourList();
for(int i=0;i<list.size();i++){
Object ob=list.get(i);
if(map.containsKey(ob)){
return false;
}else{
map.put(ob,"");
}
}
return true;
}
Object[] object=(Object[]) list.get(i);
String ob=(String) object[2];
collections.b...search(List,.....);