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 HashSet cho ListView Android

Giới thiệu

HashSet loại trùng lặp nhanh nhất (O(1)) nhưng không giữ thứ tự. Phù hợp khi không cần sắp xếp.

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

EditText, Button Lưu/Làm mới, ListView.

Bước 3: MainActivity.java - dùng HashSet

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.HashSet;

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 với HashSet (không giữ thứ tự)
            HashSet hs = new HashSet<>(array_list);
            array_list.clear();
            array_list.addAll(hs);

            arrayAdapter.notifyDataSetChanged();
            Toast.makeText(this, "Đã thêm (không trùng, thứ tự ngẫu nhiên)", Toast.LENGTH_LONG).show();
        });
    }
}

Chạy ứng dụng

Nhập tên trùng: không thêm vào ListView. Thứ tự hiển thị có thể khác thứ tự nhập.

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