Loop没有捕获重复项并在Android(Java)中删除它们

前端之家收集整理的这篇文章主要介绍了Loop没有捕获重复项并在Android(Java)中删除它们前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我最近开始使用Android和Java编程,所以请耐心等待.

我写了一个循环,在将新名称和电话号码添加到列表和隐藏数组之前,应该删除它之前找到的任何重复项.使用当前的方法,我仍然可以不断重复,当单击按钮再次添加所有相同的联系人时,我再次获得所有联系人.这让我觉得重复检查方法根本不能正常工作,但我没有得到任何帮助

我有两个我在外面创建的列表数组:

  1. List

这是添加联系人方法

  1. public void AddAllContacts(View view) {
  2. try {
  3. Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null);
  4. while (phones.moveToNext()) {
  5. String linesp = System.getProperty("line.separator");
  6. TextView quantityTextView = (TextView) findViewById(R.id.numbersview);
  7. String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
  8. String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
  9. duplicatecheck(name,phoneNumber);
  10. addthistothelist(name,phoneNumber);
  11. }
  12. phones.close();
  13. }
  14. catch (Exception e){
  15. e.printStackTrace();
  16. }
  17. }

这是重复检查方法

  1. public void duplicatecheck(String name,String phoneNumber) {
  2. for (int i=0;i

这是在检查重复项并删除调用方法,下一个方法添加数字和名称方法

  1. public void addthistothelist(String nameofperson,String NumberOfPerson) {
  2. String linesp = System.getProperty("line.separator");
  3. TextView quantityTextView = (TextView) findViewById(R.id.numbersview);
  4. String textpost = quantityTextView.getText().toString();
  5. NumberOfPerson = NumberOfPerson.replaceAll("[^0-9]","");
  6. if(NumberOfPerson.contains("+1")) {
  7. phnnumbers.add(NumberOfPerson);
  8. names.add(nameofperson);
  9. NumberOfContactsAdded++;
  10. quantityTextView.append(linesp+nameofperson+" " +NumberOfPerson);
  11. } else {
  12. NumberOfPerson= "+1"+NumberOfPerson;
  13. phnnumbers.add(NumberOfPerson);
  14. names.add(nameofperson);
  15. NumberOfContactsAdded++;
  16. quantityTextView.append(linesp+nameofperson+" " +NumberOfPerson);
  17. }
  18. }

我真的迷失了我可能做错的事.我会尝试清理这些代码,但它甚至无法正常工作以便我清理它.

最佳答案
你可以这样做:

>为person创建bean类

公共类人{
    私有字符串名称;
    私人手机;

  1. public Person(String name,String phone) {
  2. this.name = name;
  3. phone = phone.replaceAll("\\W+","");
  4. phone = "+1"+phone;
  5. this.phone = phone;
  6. }
  7. @Override
  8. public boolean equals(Object o) {
  9. if (this == o)
  10. return true;
  11. if (o == null || getClass() != o.getClass())
  12. return false;
  13. Person person = (Person) o;
  14. return name != null ? name.equals(person.name) : person.name == null && (phone != null ? phone.equals(person.phone) : person.phone == null);
  15. }
  16. @Override
  17. public int hashCode() {
  18. int result = name != null ? name.hashCode() : 0;
  19. result = 31 * result + (phone != null ? phone.hashCode() : 0);
  20. return result;
  21. }

}
>然后迭代所有的联系人并将它们放在一个集合中,它将自动避免dulicates

  1. Set

//这里你想要你可以用Person’s Set做什么
        }
        catch(例外e){
            e.printStackTrace();
        }
    }

猜你在找的Android相关文章