删除ArrayList中重复元素的2种方法
1、使用HashSet
HashSet的元素是不可重复的,且元素的顺序是无序的,元素可以使null,但是只能有一个null(元素不可重复)。
1 import java.util.ArrayList; 2 import java.util.HashSet; 3 4 public class ArrayListTest1 { 5 public static void main(String[] args){ 6 ArrayList<String> al1 = new ArrayList<String>(); 7 al1.add("A1"); 8 al1.add("A2"); 9 al1.add("A3"); 10 al1.add("A2"); 11 al1.add("A4"); 12 al1.add("A1"); 13 al1.add("A5"); 14 System.out.println("删除重复元素之前:"+al1); 15 16 HashSet<String> set = new HashSet<String>(al1); 17 ArrayList<String> al2 = new ArrayList<String>(set); 18 19 System.out.println("删除重复元素之后:"+al2); 20 } 21 }
结果:
从结果可以看出,使用HashSet来删除ArrayList的重复元素以后,元素的顺序改变了。
2、使用LinkedHashSet
LinkedHashSet不允许有重复元素,同时保持元素的插入顺序。
1 package hibernate.crud.domain.test; 2 3 import java.util.ArrayList; 4 import java.util.LinkedHashSet; 5 6 public class ArrayListTest2 { 7 public static void main(String[] args){ 8 ArrayList<String> al1 = new ArrayList<String>(); 9 al1.add("A1"); 10 al1.add("A2"); 11 al1.add("A3"); 12 al1.add("A2"); 13 al1.add("A4"); 14 al1.add("A1"); 15 al1.add("A5"); 16 System.out.println("删除重复元素之前:"+al1); 17 18 LinkedHashSet<String> set = new LinkedHashSet<String>(al1); 19 20 ArrayList<String> al2 = new ArrayList<String>(set); 21 22 System.out.println("删除重复元素之后:"+al2); 23 } 24 }
结果:
从结果可以看出,使用LinkedHashSet来删除ArrayList的重复元素以后,还是原来的插入顺序。