1、使用LinkedHashSet删除Arraylist中的重复数据
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
public class ArrayListExample {
public static void main(String[] args) {
ArrayList<Integer> numbersList=new ArrayList<>(Arrays.asList(1,1,2,3,3,3,4,5,6));
System.out.println(numbersList);
LinkedHashSet<Integer> hashSet=new LinkedHashSet<>(numbersList);
ArrayList<Integer> listWithoutDuplicates=new ArrayList<>(hashSet);
System.out.println(listWithoutDuplicates);
}
}
2、使用java8特性stream进行List去重
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class ArrayListExample {
public static void main(String[] args) {
ArrayList<Integer> numbersList=new ArrayList<>(Arrays.asList(1,1,2,3,3,3,4,5,6));
System.out.println(numbersList);
List<Integer> listWithoutDuplicates=numbersList.stream().distinct().collect(Collectors.toList());
System.out.println(listWithoutDuplicates);
}
}
3、利用HashSet不能添加重复数据的特性 由于HashSet不能保证添加顺序,所以只能作为判断条件保证顺序:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args) {
ArrayList<String> numbersList=new ArrayList<>(Arrays.asList("1","1","2","3","3","3","4","5","6"));
System.out.println(numbersList);
removeDuplicate(numbersList);
System.out.println(numbersList);
}
private static void removeDuplicate(List<String> list){
HashSet<String> set=new HashSet<>(list.size());
List<String> result=new ArrayList<>(list.size());
for(String str:list){
if(set.add(str)){
result.add(str);
}
}
list.clear();
list.addAll(result);
}
}
4、利用List的contains方法循环遍历,重新排序,指添加一次数据,避免重复:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args) {
ArrayList<String> numbersList=new ArrayList<>(Arrays.asList("1","1","2","3","3","3","4","5","6"));
System.out.println(numbersList);
removeDuplicate(numbersList);
System.out.println(numbersList);
}
private static void removeDuplicate(List<String> list){
List<String> result=new ArrayList<>(list.size());
for(String str:list){
if(!result.contains(str)){
result.add(str);
}
}
list.clear();
list.addAll(result);
}
}
5、双重for循环去重
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args) {
ArrayList<String> numbersList=new ArrayList<>(Arrays.asList("1","1","2","3","3","3","4","5","6"));
System.out.println(numbersList);
removeDuplicate(numbersList);
System.out.println(numbersList);
}
private static void removeDuplicate(List<String> list){
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.size(); j++) {
if(i!=j&&list.get(i)==list.get(j)){
list.remove(list.get(j));
}
}
}
}
}