我正在使用firebase数据库和android studio。
我正在推荐系统。数据库有26个旅行目的地,每个目的地都有一些属(活动,地区,天气,一年中的时间) 目的地号码1:[https://i.stack.imgur.com/hrkpP.png] 那些价值永远不会改变。
另一方面。我问人们一系列问题,他们正在保存在数据库中。对问题1,2和3的回答:[https://i.stack.imgur.com/HJgMn.png]
如果响应与目标功能有任何共同之处,我想查看响应。如果确实如此,我想增加一个名为score的int(我还创建了一个arraylist Destination:使用名称,来自目标db的id,并且还有一个int分数)
Firebase让我从一个有很多孩子的孩子那里得到一个。
Iterable<DataSnapshot> destinosHijos = dataSnapshot.child("destinos").getChildren();
Iterable<DataSnapshot> destinosRes = dataSnapshot.child("respuestas").child(codigo).child(user).getChildren();
如果我想迭代两个列表并比较它们之间的东西,我会做这样的事情(hypotecally)
for(int i=0;i<destinationsDB.size();i++){
for(int j=0;j<responsesDB.size();j++){
String destinationR=destinationsDB.get(i).getRegion();
String responsesR=responsesDB.get(j).getRegion();
if(destinationR.equals(responsesR){
score++;
}
}
}
我不能对de foreach做同样的事。我试图获得所有目的地的区域和所有具有“区域”的响应。但是当我在另一个内部使用foreach时,与forloop
不一样如果我尝试。
for (DataSnapshot hijo : destinosHijos) {
// all of the regions from all of the destinations
String destinoRegion= hijo.child("region").getValue().toString
}
for (DataSnapshot res : destinosRes) {
// all the responses with "region" on them
if (res.child("region").exists()) {
if(res.child("region").getValue.equals(destinoRegion)){
score++;
}
}
}
}
}
我修改了它,因为实际的是更长的时间。
反正。当我尝试println - res.child(“region”)。getValue.equals(region) - 它只打印2次错误的时间。这是2个响应,上面有“区域”。
而不是printint 2 * 26 = 72次,这将使每个响应与每个目的地进行比较(这就是forloop会做的)。
如果您阅读了所有内容,请提前感谢您。