Java Android-联系人列表(重复号码)

Java Android-联系人列表(重复号码),java,android,Java,Android,我的代码显示联系人列表。这是我在选项卡式活动中的片段: public class Tab2Contact extends Fragment { ListView listViewContacts; private static final int PERMISSIONS_REQUEST_READ_CONTACTS=100; ArrayList contacts; Cursor c; @Override public View onCreateV

我的代码显示联系人列表。这是我在选项卡式活动中的片段:

public class Tab2Contact extends Fragment {

    ListView listViewContacts;
    private static final int PERMISSIONS_REQUEST_READ_CONTACTS=100;
    ArrayList contacts;
    Cursor c;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.tab2_contact, container, false);

        listViewContacts=(ListView)rootView.findViewById(R.id.listViewContacts);
        int permissionCheck= ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_CONTACTS);
        if (permissionCheck== PackageManager.PERMISSION_GRANTED){
            showContacts();
        }else{
            ActivityCompat.requestPermissions(getActivity(),
                    new String[]{Manifest.permission.READ_CONTACTS},
                    PERMISSIONS_REQUEST_READ_CONTACTS);
        }
        ArrayAdapter adapter=new ArrayAdapter(getActivity(),
                android.R.layout.simple_list_item_1,contacts);
        listViewContacts.setAdapter(adapter);

        return rootView;
    }


    private void showContacts(){

        c = getActivity().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,ContactsContract.Contacts.DISPLAY_NAME+" ASC ");
        contacts=new ArrayList();
        while (c.moveToNext()){
            String contactName=c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            String phNumber=c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            contacts.add(contactName+"\n"+phNumber);

        }
        c.close();
    }
}
我有两个问题:

  • 如何从中删除重复的数字

  • 如何将名称和数字分隔为两个单独的数组


  • 我会使用集合或地图,并将phNumber作为键。当您迭代以获取联系人时:

    HashMap<String, String> phNumberMap = new HashMap<>();
    while (c.moveToNext()){
        phNumberMap.put(phNumber, contactName);
    }
    
    HashMap phNumberMap=newhashmap();
    while(c.moveToNext()){
    phNumberMap.put(phNumber,contactName);
    }
    

    然后再次迭代HashMap,从HashMap创建两个单独的数组

    我可以将它分为两个数组,只需要重复的解决方案请编辑您的问题以显示您的增强功能,然后澄清单个问题。使用HashSet而不是ArrayList