日期:2014-05-20  浏览次数:20771 次

请问如何确保List中的数据没有重叠的?
前提是需要保持有序性,所以不能采用Set

如果对List中的每个值都遍历List,来判断List中是不是有重叠的值,效率太低了,不能采用

判断是不是重叠是根据对象的某一个字段来判断的

请问,有没有什么比较好的办法?最好效率比较高

------解决方案--------------------
List.contains()
------解决方案--------------------
TreeSet不也是有序的么?
------解决方案--------------------
首先你的List里面存放的是什么类型的对象

而且重复值 到底是 对象内存一样 还是紫荆定义的某几个属性相同就是同一个对象

contains 应该也是遍历

你最好在list里面放一个 标志对象

比如这个对象存储了 List里面其他对象的标志位 在插入之前先对调用标志对象的方法

看是不是有重复值 就可以避免遍历 List了
------解决方案--------------------
将List中的数据导入SET,然后再导出来不就可以了~~SET相当于过滤器了
------解决方案--------------------
个人觉得List.contains()就挺好。。
------解决方案--------------------
第一,Set也可以保持有序。
第二,要避免重复,不遍历成员是不可能的,Set的内部也是采用遍历的。
第三,要避免重复,你必须为成员类定义equals()方法(最好同时定义hashCode()方法和compareTo()方法),String对象除外,因为String类已经对这些做了很好的定义了。
------解决方案--------------------
避免重复,你用Hashtable类,不是挺好吗
------解决方案--------------------
请使用TreeSet
------解决方案--------------------
add的时候加个判断
if (list.contains(obj)){//如果包含了一个重复的对象,就不加

}
------解决方案--------------------
同楼上
------解决方案--------------------
问题没必要太复杂化吧
------解决方案--------------------
请改成LinkedHashSet
TreeSet会重新排序的。