循环逻辑的迭代器

时间:2014-02-24 15:31:48

标签: android loops iterator

我有一个我无法思考的问题。 我有一个电话号码列表,表示为:用户有应用程序 我还有一个手机中所有联系人的树形图 我想将拥有该应用程序的所有用户与我的联系人树形图进行比较,这样如果用户有应用程序 - 我可以将它们添加为朋友,但如果他们没有,那么我可以发送文本邀请。这就是我所拥有的,但它不起作用:

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
            }

1 个答案:

答案 0 :(得分:0)

每次检查用户是否与您当前正在查看的联系人匹配时,都会添加该用户。您似乎只想为每个联系人添加一个用户。

一种方法是在for循环之前添加一个布尔“found”并将其初始化为false。找到拥有该应用程序的用户后,将此布尔值设置为true。在for循环之后将else分支标记为“//他们没有应用程序”,并且仅在(!found)时运行它。这将确保您只为每个联系人添加一个联系人数据。