Một số trường hợp chúng ta làm việc với ArrayList trong java Android sẽ bị tình muốn ArrayList của chúng ta có các phần tử trùng lặp nhau mà điều đó chúng ta không hề muốn. Sau đây, là giải pháp cho vấn đề này mà không cần dùng bất kỳ thư viện nào.
Step 1: Tạo một class tên ArrayListUtil
public class ArrayListUtil {
public static <T> ArrayList<T> removeDuplicates(ArrayList<T> list) {
// Create a new ArrayList
ArrayList<T> newList = new ArrayList<T>();
// Traverse through the first list
for (T element : list) {
// If this element is not present in newList
// then add it
if (!newList.contains(element)) {
newList.add(element);
}
}
return newList;
}
}
Step 2: Giờ đây, chúng tôi sẽ mang bạn đến cho bạn một ví dụ cụ thể. Ví dụ, chúng ta có danh sách sinh viên, mỗi sinh viên chỉ xuất hiện 1 lần trong danh sách đó (giả thuyết danh sách sinh viên không có người nào trùng tên)
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//create new student
StudentModel studentModel1 = new StudentModel();
studentModel1.setAddress("Ho Chi Minh City");
studentModel1.setName("Thong");
studentModel1.setOld(20);
StudentModel studentModel2 = new StudentModel();
studentModel2.setAddress("Ha Noi City");
studentModel2.setName("John");
studentModel2.setOld(22);
// create list student
ArrayList<StudentModel> listStudent = new ArrayList<>();
listStudent.add(studentModel1); // item 1
listStudent.add(studentModel2); // item 2
listStudent.add(studentModel1); // item 3
listStudent.add(studentModel1); // item 4
Log.d("VIEW_LIST_STUDENT", "Amount of list student: " + listStudent.size() + "");
// we can see the list of students is overlapping in item 1 and 3, 4
// REMOVE ITEM DUPLICATE
ArrayList<StudentModel> newListStudent = ArrayListUtil.removeDuplicates(listStudent);
Log.d("VIEW_LIST_STUDENT", "Amount of new list student: " + newListStudent.size() + "");
}
}
Step 3: Kết quả
2022-06-28 23:56:00.331 15385-15385/com.tnv.duplicatesarraylist D/VIEW_LIST_STUDENT: Amount of list student: 4
2022-06-28 23:56:00.331 15385-15385/com.tnv.duplicatesarraylist D/VIEW_LIST_STUDENT: Amount of new list student: 2
Eng Sub: