【发布时间】:2018-08-15 23:34:03
【问题描述】:
我正在尝试合并 2 个已获取 json URL 数据的数组,这 2 个 url 有 1 个名为“bay_id”的共享字段,该字段匹配 3080 个项目。 URL 1 有 3080 个数据,URL 2 有 7100 个数据。我确实比较了 URL 1 中的“bay_id”是否在 URL 2 中具有相同的“bay_id”然后合并。我的 for 循环遇到的问题是,它为所有索引设置了相同的“bay_id”。除了名为 Post 的 myClass 之外,还有所有需要的字段的 setter 和 getter 方法。 我的代码是:
for (int i = 0; i < url_1.length; i++) {
for (int j = 0; j < url_2.length; j++) {
if (url_2[j].getBayId_2().equals(url_1[i].getBayId_1()) ) {
for (int k = 0; k < mergedURLs.length; k++) {
mergedURLs[k].setBayId_1(url_1[i].getBayId_1());
mergedURLs[k].setStatus(url_1[i].getStatus());
mergedURLs[k].setLat(url_1[i].getLat());
mergedURLs[k].setLon(url_1[i].getLon());
mergedURLs[k].setBayId_2(url_2[j].getBayId_2());
//and so on for all the fields
}//-------End if statment
}//------End for loop url_2
}//-------end for loop url_1
}//-------end for loop
for (int z = 0; z < mergedURLs.length; z++) {
System.out.println("New bay_id" + mergedURLs[z].getBayId_1());
}
【问题讨论】:
-
你认为最内层循环的作用是什么?哦,是的,它使用相同的值更新 ALL
mergedURLs条目。 --- 也许您的意思是 添加 一个新对象,其值从url_1[i]和url_2[j]合并到mergedURLs数组中的 next 槽? -
正确我知道循环是将所有索引分配给相同的值,我的意思是添加 url_1 中的所有字段,并且新数组中 url_2 中的所有字段如下:索引 0 具有字段来自 url_1 和来自 url_2 索引 1 的字段具有来自 url_1 的字段,来自 url_2 索引 2 的字段具有来自 url_1 的字段和来自 url_2 的字段等等......
-
不会使用
Set(如果订单必须保留LinkedHashSet)更容易吗?从您的第一个数组中创建集合,然后添加第二个数组的 url(仅在不重复时才成功),如果需要将其转换回数组。 (或者如果您确实需要合并对象,请改用Map)。