Signal-Android/app/src/main/java/org/thoughtcrime/securesms/contacts/SelectedContactSet.java

59 lines
1.3 KiB
Java

package org.thoughtcrime.securesms.contacts;
import androidx.annotation.NonNull;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
/**
* Specialised set for {@link SelectedContact} that will not allow more than one entry that
* {@link SelectedContact#matches(SelectedContact)} any other.
*/
public final class SelectedContactSet {
private final List<SelectedContact> contacts = new LinkedList<>();
public boolean add(@NonNull SelectedContact contact) {
if (contains(contact)) {
return false;
}
contacts.add(contact);
return true;
}
public boolean contains(@NonNull SelectedContact otherContact) {
for (SelectedContact contact : contacts) {
if (otherContact.matches(contact)) {
return true;
}
}
return false;
}
public List<SelectedContact> getContacts() {
return new ArrayList<>(contacts);
}
public void clear() {
contacts.clear();
}
public int remove(@NonNull SelectedContact otherContact) {
int removeCount = 0;
Iterator<SelectedContact> iterator = contacts.iterator();
while (iterator.hasNext()) {
SelectedContact next = iterator.next();
if (next.matches(otherContact)) {
iterator.remove();
removeCount++;
}
}
return removeCount;
}
}