这里的代码是在您的联系人列表中查找重复号码以及该号码在您的联系人列表中出现的频率
public ArrayList<ContactToDelete> findDuplicates(ArrayList<Contact> listContainingDuplicates) {
ArrayList<Contact> duplicatesOrganised = new ArrayList();
ArrayList<ContactToDelete> setToReturn = new ArrayList();
// Collections.sort(listContainingDuplicates);
Collections.sort(listContainingDuplicates, new Comparator<Contact>() {
public int compare(Contact obj1, Contact obj2) {
// ## Ascending order
return obj1.getPhoneNumber().compareToIgnoreCase(obj2.getPhoneNumber()); // To compare string values
// return Integer.valueOf(obj1.empId).compareTo(Integer.valueOf(obj2.empId)); // To compare integer values
// ## Descending order
// return obj2.firstName.compareToIgnoreCase(obj1.firstName); // To compare string values
// return Integer.valueOf(obj2.empId).compareTo(Integer.valueOf(obj1.empId)); // To compare integer values
}
});
int ii, size = listContainingDuplicates.size();
//Orders all the duplicates together along with the unique(non-duplicate)
for (ii = 0; ii < size; ii++) {
if (ii + 1 == size) {
duplicatesOrganised.add(listContainingDuplicates.get(ii));
Log.i("DuplicateOrdered: ", listContainingDuplicates.get(ii).getPhoneNumber() + " " + listContainingDuplicates.get(ii).getName());
} else if (listContainingDuplicates.get(ii).getPhoneNumber().equals(listContainingDuplicates.get(ii + 1).getPhoneNumber())) {
duplicatesOrganised.add(listContainingDuplicates.get(ii));
Log.i("DuplicateOrdered: ", listContainingDuplicates.get(ii).getPhoneNumber() + " " + listContainingDuplicates.get(ii).getName());
} else {
duplicatesOrganised.add(listContainingDuplicates.get(ii));
Log.i("DuplicateOrdered: ", listContainingDuplicates.get(ii).getPhoneNumber() + " " + listContainingDuplicates.get(ii).getName());
}
}
int firstcome = 0;
int start = 0;
boolean present = false;
boolean duplicatefond = false;
int startsetToReturn = 0;
if (!duplicatesOrganised.isEmpty() &&
duplicatesOrganised.size() > 1 &&
!duplicatesOrganised.get(0).getPhoneNumber().equals(duplicatesOrganised.get(1).getPhoneNumber())) {
start = 1;
}
for (int i = 0; i < duplicatesOrganised.size(); i++) {
String currentNumber = duplicatesOrganised.get(i).getPhoneNumber();
if(setToReturn.size()>0){
for (int j = 0; j <setToReturn.size() ; j++) {
if(setToReturn.get(j).getNumber().equals(currentNumber)){
present = true;
}
}
}
int flag = 0;
if(!present) {
for (int j = i+1; j < duplicatesOrganised.size(); j++) {
if (duplicatesOrganised.get(j).getPhoneNumber().equals(currentNumber)) {
duplicatefond = true;
if (flag == 0) {
flag++;
setToReturn.add(new ContactToDelete(duplicatesOrganised.get(i).getPhoneNumber(), duplicatesOrganised.get(i).getName(), flag));
} else
{
flag++;
setToReturn.get(startsetToReturn).setRepeatValue(flag);
}
}
}
if(duplicatefond) {
startsetToReturn++;
duplicatefond = false;
}
}
firstcome = 0;
present = false;
}
startsetToReturn =0;
Log.e("setToReturn", setToReturn.toString());
return setToReturn;
}
我使用的两个模型类,一个用于获取完整的联系人列表,另一个用于获取重复号码
没有1个模型类
public class ContactToDelete {
private String number;
private String name;
private int repeatValue;
private String contactID;
public ContactToDelete(String number, String name, int repeatValue, String contactID) {
this.number = number;
this.name = name;
this.repeatValue = repeatValue;
this.contactID = contactID;
}
public ContactToDelete() {
}
public ContactToDelete(String number, String name, int repeatValue) {
this.number = number;
this.name = name;
this.repeatValue = repeatValue;
}
public String getContactID() {
return contactID;
}
public void setContactID(String contactID) {
this.contactID = contactID;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getRepeatValue() {
return repeatValue;
}
public void setRepeatValue(int repeatValue) {
this.repeatValue = repeatValue;
}
}
No 2 模型类
public class Contact {
public String name;
public String phoneNumber;
public Contact(String name, String phoneNumber, String contactID) {
this.name = name;
this.phoneNumber = phoneNumber;
this.contactID = contactID;
}
public String getContactID() {
return contactID;
}
public void setContactID(String contactID) {
this.contactID = contactID;
}
public String contactID;
public Contact() {
}
public Contact(String name, String phoneNumber) {
this.name = name;
this.phoneNumber = phoneNumber;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}