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.
