我在Java中遇到一个难题。我有两个数据集,或者我们可以说两个数组。它们是x和y坐标。只要这两个坐标值匹配,它们就可以提取整个数据块。然后它再次寻找匹配项。我附有这张照片
蓝线显示第一个数据块
黑线显示第二个数据块
红线显示第三个数据块。
我为这个问题开发了一种算法
取两个循环计数器i和k并初始化i = 0和k = 1。
2。检查x [i]和y [i]是否与x [k]和y [k]相同,然后将x [i],y [i]保存为x [k],y [k],递增两个计数器。
3。如果它们不是与1相同的递增计数器k。
如果它们与k的增量不相同,则为1。
5。如果它们是相同的递增计数器i,则将其设置为1,并设置k = i + 1。
6。然后再次检查
这是我的算法。现在我的问题是如何实现保存数据部分。我应该将这些数据保存在哪里。我们还应该记住,块的大小并不总是相同的。所以我需要一些动态数据结构。
第二,将一对数据与其他对或数据进行比较的技术是什么?
因此非常欢迎对这两个问题提出有益的建议。
先谢谢您。
答案 0 :(得分:0)
为什么不使用OOP?
DataChunk
和x
属性创建y
类equals
方法以比较x
和y
DataChunk
个对象的列表(例如ArrayList)
然后... 您的问题不太清楚- 你有两个可能重复值的数组吗? 还是只有一个可能重复的值?
根据答案,您可以遍历第一个列表并调用第二个列表contains
方法,如果为true,则具有匹配的dataChunk并可以随意将其放置在任何地方。
如果只有一个列表,则循环将有所不同以查找第二个值。在集合/数组中查找重复项只是标准方法...
Java中的BTW使用数组是笨拙的,不是使用集合的正确方法,而Java具有非常强大且经过改进的集合框架,几乎可以满足所有需求...