我有一个我无法思考的问题。 我有一个电话号码列表,表示为:用户有应用程序 我还有一个手机中所有联系人的树形图 我想将拥有该应用程序的所有用户与我的联系人树形图进行比较,这样如果用户有应用程序 - 我可以将它们添加为朋友,但如果他们没有,那么我可以发送文本邀请。这就是我所拥有的,但它不起作用:
Iterator<Entry<String, String>> it = contacts.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> pairs = (Map.Entry<String, String>)it.next();
for(int i = 0; i < users.size(); i++) {
String userNumber = Helper.formatNumber(users.get(i).getString("phone"));
if(pairs.getValue().equals(userNumber)) { //they have the app
contact_data.add(new Contact(pairs.getKey().toString(), pairs.getValue().toString(), true));
} else { //they don't have the app
contact_data.add(new Contact(pairs.getKey().toString(), pairs.getValue().toString(), false));
}
}
it.remove(); // avoids a ConcurrentModificationException
}
答案 0 :(得分:0)
每次检查用户是否与您当前正在查看的联系人匹配时,都会添加该用户。您似乎只想为每个联系人添加一个用户。
一种方法是在for循环之前添加一个布尔“found”并将其初始化为false。找到拥有该应用程序的用户后,将此布尔值设置为true。在for循环之后将else分支标记为“//他们没有应用程序”,并且仅在(!found)时运行它。这将确保您只为每个联系人添加一个联系人数据。