Если я хочу быть честным с вами, я не знаю, как работает какая-либо коллекция в android или java, но мой вопрос и моя цель, я хочу удалить повторяющийся элемент в ArrayList моей модели или моего класса это моя модель ниже:
public class PersonClass {
private String ID;
private String Name;
private String Family;
private String Nickname;
private String Email;
private String Mobile;
private Date BirthDate;
private boolean Admin;
private boolean Gender;
private String ThumbnailURL;
public PersonClass() {
}
public PersonClass(String ID, String name, String family, String nickname, String email, String mobile, Date birthDate, boolean admin, boolean gender, String thumbnailURL) {
this.ID = ID;
Name = name;
Family = family;
Nickname = nickname;
Email = email;
Mobile = mobile;
BirthDate = birthDate;
Admin = admin;
Gender = gender;
ThumbnailURL = thumbnailURL;
}
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getFamily() {
return Family;
}
public void setFamily(String family) {
Family = family;
}
public String getNickname() {
return Nickname;
}
public void setNickname(String nickname) {
Nickname = nickname;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
public String getMobile() {
return Mobile;
}
public void setMobile(String mobile) {
Mobile = mobile;
}
public Date getBirthDate() {
return BirthDate;
}
public void setBirthDate(Date birthDate) {
BirthDate = birthDate;
}
public boolean isAdmin() {
return Admin;
}
public void setAdmin(boolean admin) {
Admin = admin;
}
public boolean isGender() {
return Gender;
}
public void setGender(boolean gender) {
Gender = gender;
}
public String getThumbnailURL() {
return ThumbnailURL;
}
public void setThumbnailURL(String thumbnailURL) {
ThumbnailURL = thumbnailURL;
}
public static void LogConsole(PersonClass Person) {
Log.i(MyApplication.LOG_TAG, "ID = " + Person.getID());
Log.i(MyApplication.LOG_TAG, "Name :" + Person.getName());
Log.i(MyApplication.LOG_TAG, "Family :" + Person.getFamily());
Log.i(MyApplication.LOG_TAG, "Nickname :" + Person.getNickname());
Log.i(MyApplication.LOG_TAG, "Email :" + Person.getEmail());
Log.i(MyApplication.LOG_TAG, "Mobile :" + Person.getMobile());
Log.i(MyApplication.LOG_TAG, "BirthDate :" + Person.getBirthDate());
Log.i(MyApplication.LOG_TAG, "Admin :" + Person.isAdmin());
Log.i(MyApplication.LOG_TAG, "Gender :" + Person.isGender());
Log.i(MyApplication.LOG_TAG, "ThumbnailURL :" + Person.getThumbnailURL());
}
}
и следует упомянуть, что я мог бы с помощью hashset и String Class удалить повторяющийся список массивов из списка массивов класса Person
AcceptList = WebService.MateList(AcceptRecordsJSONArray);
ArrayList<String> IDs1 = new ArrayList<>(AcceptList.size());
for (PersonClass person : AcceptList)
IDs1.add(person.getID());
Log.e(MyApplication.LOG_TAG, "-------------------------------------IDs1(1)---------------------------------------");
for (String ID : IDs1)
Log.i(MyApplication.LOG_TAG, "First time->ID = " + ID);
Log.e(MyApplication.LOG_TAG, "-------------------------------------IDs1(1)---------------------------------------");
Set<String> set = new LinkedHashSet<>(IDs1);
IDs1.clear();
IDs1.addAll(set);
Log.e(MyApplication.LOG_TAG, "-------------------------------------IDs1(2)---------------------------------------");
for (String ID : IDs1)
Log.i(MyApplication.LOG_TAG, "Second time->ID = " + ID);
Log.e(MyApplication.LOG_TAG, "-------------------------------------IDs1(2)---------------------------------------");
Log.e(MyApplication.LOG_TAG, "-------------------------------------AcceptList(1)---------------------------------------");
for (PersonClass person : AcceptList)
PersonClass.LogConsole(person);
Log.e(MyApplication.LOG_TAG, "-------------------------------------AcceptList(1)---------------------------------------");
ArrayList<PersonClass> AcceptList2 = removeDuplicates(AcceptList);
Log.e(MyApplication.LOG_TAG, "-------------------------------------AcceptList(2)---------------------------------------");
for (PersonClass person : AcceptList2)
PersonClass.LogConsole(person);
Log.e(MyApplication.LOG_TAG, "-------------------------------------AcceptList(2)---------------------------------------");
Простите!!! Я любитель кодирования, и я знаю, что ответ на мой вопрос заключается в работе с компаратором или хеш-кодом и / или ... в классе, но я не знаю, реализую код, и я могу не справиться с этим ..
Возможный дубликат Как удалить повторяющиеся объекты в List <MyObject> без equals / hashcode?
спасибо за ссылку, но я искал эту ссылку, но ...
@ADM Мой дорогой друг, спасибо тебе большое, ты очень милый для меня и юноши??? ??? ??? ??? ??? ???
Удаление повторяющихся элементов из ArrayList объектов:
Во-первых, нам нужно переопределить методы equals() и hashcode() вашего PersonClass.
@Override
public boolean equals(Object obj) {
if (obj == this) return true;
if (!(obj instanceof Person)) {
return false;
}
Person person = (Person) obj;
return person.id.equals(id);
}
@Override
public int hashCode() {
return id;
}
Есть и другие лучшие способы сделать это в зависимости от реализации и использования вашего класса. Зацените их здесь.
Теперь, удалив повторяющиеся элементы, используйте HashSet или LinkedHashSet.
ArrayList<Person> duplicate = new ArrayList<Person>
duplicate.add(new Person())
...
...
HashSet<Person> filter = new HashSet(duplicate);
ArrayList<Person> persons = new ArrayList<Person>(filter);
Большое спасибо, вы очень милы для меня и юношей, я надеюсь, что вы доберетесь до всего в вашей жизни !!! Благодарность!!! ??? ??? ??? ??? ??? ???
Почему бы не использовать
Set, если вам нужны только уникальные элементы. Или, если вы хотите удалить объект с каким-то повторяющимся свойством, просто используйте цикл? В чем твоя проблема? Пожалуйста, укажите