Java 基于列表中的一组值进行复制
我有一个VO列表,需要根据值查找重复条目吗Java 基于列表中的一组值进行复制,java,sorting,collections,Java,Sorting,Collections,我有一个VO列表,需要根据值查找重复条目吗 name usageCount numberofReturns trendNumber nonTrendNumber trendType Name1 0 0 1 1 A Name2 0 0 1 1 B Name3 0 0
name usageCount numberofReturns trendNumber nonTrendNumber trendType
Name1 0 0 1 1 A
Name2 0 0 1 1 B
Name3 0 0 1 2 C
Name4 0 0 2 2 D
Name5 0 0 2 2 E
当前趋势=“X”
在这个列表中,我必须使用usagecount、numberofreturns、trendNumber和nonTrendnumber找出重复的值。这里(Name1,name2)和(Name4,name5)是相同的,所以我必须更新trendType值=X,并保持名称3不变。
除了使用for循环迭代列表并使用CopyOnWriteArrayList更新列表值(以避免并发异常)之外,还有其他方法吗?此VO对象列表由您填充?如果是,则可以在VO类中实现equals、hashCode方法。您可以根据希望唯一的字段(usagecount、numberofreturns、trendNumber和nonTrendnumber)实现这些方法。之后,您可以将列表替换为Set,并且该Set将不包含任何重复项
如果您没有填充VO对象列表,则另一种解决方案是迭代列表并插入到集合中。VO2类是与VO相同的DTO类,但实现了equals和hashcode方法。为什么更改列表中的对象数据会导致
ConcurrentModificationException
?您不必更改直接包含对象的列表,只需更改对象数据。@Smutje感谢您提供的信息,除了循环之外,还有其他方法可以执行此逻辑吗?显然有人必须循环列表以查找任何重复项,无论是直接的代码还是库方法—在您的情况下,更大的问题是您必须将每一行与其他每一行进行匹配,以检查重复项,因为重复项仅在行之间定义,而不是基于某些常量值全局定义。您必须至少迭代一次集合,以了解它包含的数据。所以,问题应该是:是否有可能只需要一次迭代就可以做你们想要的事情。