Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีลบองค์ประกอบซ้ำออกจาก ArrayList ใน Java

อินเทอร์เฟซ Set ไม่อนุญาตให้มีองค์ประกอบซ้ำ เมธอด add() ของอินเทอร์เฟซนี้รับองค์ประกอบและเพิ่มลงในอ็อบเจกต์ Set หากเพิ่มสำเร็จคืนค่า true หากพยายามเพิ่มองค์ประกอบที่มีอยู่แล้ว การเพิ่มจะล้มเหลวคืนค่า false

ดังนั้น เพื่อลบองค์ประกอบซ้ำของอ็อบเจกต์ ArrayList −

  • ได้/สร้าง ArrayList ที่ต้องการ
  • สร้างอ็อบเจกต์ Set ว่าง
  • พยายามเพิ่มองค์ประกอบทั้งหมดของ ArrayList ลงใน Set
  • ล้างเนื้อหาของ ArrayList ด้วยเมธอด clear()
  • ตอนนี้ ใช้เมธอด addAll() เพิ่มเนื้อหาของ Set กลับเข้า ArrayList อีกครั้ง

ตัวอย่างโค้ด

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class RemovingDuplicates {
    public static void main(String[] args){
        // สร้างอ็อบเจกต์ ArrayList
        ArrayList<String> list = new ArrayList<String>();
        list.add("JavaFX");
        list.add("Java");
        list.add("JavaFX");
        list.add("OpenCV");
        list.add("Java");
        list.add("JOGL");
        list.add("JOGL");
        list.add("HBase");
        list.add("Flume");
        list.add("HBase");
        list.add("Impala");
        
        System.out.println("Contents of the Array List : \n" + list);
        
        // ได้ Iterator ของ ArrayList
        Iterator<String> it = list.iterator();
        
        // สร้าง Set ว่าง
        Set<String> set = new HashSet<String>();
        
        // เพิ่มองค์ประกอบของ ArrayList ลง Set
        while(it.hasNext()) {
            set.add(it.next());
        }
        
        // ลบองค์ประกอบทั้งหมดจาก ArrayList
        list.clear();
        
        // เพิ่มองค์ประกอบของ Set กลับเข้า List
        list.addAll(set);
        
        System.out.println("Contents of the Array List after removing duplicate elements: \n" + list);
    }
}

ผลลัพธ์

Contents of the Array List : [JavaFX, Java, JavaFX, OpenCV, Java, JOGL, JOGL, HBase, Flume, HBase, Impala]
Contents of the Array List after removing duplicate elements: [JavaFX, Java, OpenCV, JOGL, Flume, Impala, HBase]