Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách loại bỏ trùng lặp ArrayList dùng TreeSet cho ListView Android

Giới thiệu

TreeSet lưu trữ phần tử duy nhất và tự động sắp xếp theo thứ tự tự nhiên. Ví dụ này dùng TreeSet để khử trùng và sắp xếp ArrayList trước khi hiển thị ListView.

Bước 1-2: Project & Giao diện

EditText nhập tên, nút "Lưu", "Làm mới", ListView.

Bước 3: MainActivity.java

package com.example.andy.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.TreeSet;

public class MainActivity extends AppCompatActivity {
    EditText name;
    ListView listView;
    ArrayList array_list = new ArrayList<>();
    ArrayAdapter arrayAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        name = findViewById(R.id.name);
        listView = findViewById(R.id.listView);
        arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, array_list);
        listView.setAdapter(arrayAdapter);

        findViewById(R.id.refresh).setOnClickListener(v -> arrayAdapter.notifyDataSetChanged());

        findViewById(R.id.save).setOnClickListener(v -> {
            String input = name.getText().toString();
            if (input.isEmpty()) {
                name.setError("Nhập tên"); return;
            }
            array_list.add(input);

            // Loại trùng & sắp xếp với TreeSet
            TreeSet ts = new TreeSet<>(array_list);
            array_list.clear();
            array_list.addAll(ts);

            arrayAdapter.notifyDataSetChanged();
            Toast.makeText(this, "Đã thêm (đã sắp xếp, không trùng)", Toast.LENGTH_LONG).show();
        });
    }
}

Chạy ứng dụng

Nhập tên trùng lặp: Toast hiện "Đã thêm" nhưng ListView không thêm bản sao, danh sách luôn sắp xếp A-Z.

Cách loại bỏ trùng lặp ArrayList dùng TreeSet cho ListView Android