Merge 2 Arrays Không Trùng Lặp (Union) trong Android
Hướng dẫn gộp hai mảng chuỗi thành một danh sách duy nhất (loại bỏ phần tử trùng lặp) sử dụng HashSet và hiển thị lên ListView.
Bước 1: Tạo dự án mới
Android Studio → File → New Project.
Bước 2: Giao diện (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_marginTop="30dp"
tools:context=".MainActivity">
<ListView
android:id="@+id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Bước 3: Code logic (src/MainActivity.java)
package com.example.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
public class MainActivity extends AppCompatActivity {
ListView list;
String[] names = new String[] {"A", "B", "C"};
String[] extended = new String[5]; // Mảng rỗng size 5
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = findViewById(R.id.list);
// Điền dữ liệu vào extended
extended[3] = "D";
extended[4] = "E";
// extended = [null, null, null, "D", "E"]
// Copy names vào đầu extended
System.arraycopy(names, 0, extended, 0, names.length);
// extended = ["A", "B", "C", "D", "E"]
// Loại bỏ trùng lặp bằng HashSet
HashSet<String> unique = new HashSet<>(Arrays.asList(extended));
unique.addAll(Arrays.asList(names)); // Thêm names lần nữa (không ảnh hưởng do Set)
// Chuyển về ArrayList để dùng cho Adapter
ArrayList<String> arrayList = new ArrayList<>(unique);
ArrayAdapter adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, arrayList);
list.setAdapter(adapter);
}
}
Giải thích các bước
System.arraycopy: Copy mảngnamesvàoextendedtừ vị trí 0.Arrays.asList(extended): Chuyển mảng thành List (chứa null).HashSet: Tự động loại bỏ null và phần tử trùng lặp.unique.addAll(): Thêm thêm elements từ names (Set đảm bảo unique).
Cách hiện đại hơn (Java 8+ / API 24+)
// Stream API - ngắn gọn, rõ ràng
List<String> merged = Stream.of(names, extended)
.flatMap(Arrays::stream)
.filter(Objects::nonNull) // Loại null
.distinct() // Loại trùng
.collect(Collectors.toList());
Chạy ứng dụng
ListView hiển thị: A, B, C, D, E (không trùng, không null).
