去除ArrayList中的重复元素,前提是不可以建立新的容器,还是使用原来的集合
方法一
使用递归来删除
import java.util.ArrayList;
public class Mytest6 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(100);
list.add(100);
list.add(100);
list.add(100);
list.add(100);
list.add(100);
list.add(100);
list.add(100);
list.add(200);
list.add(100);
list.add(400);
list.add(500);
list.add(100);
list.add(300);
list.add(100);
list.add(100);
list.add(200);
list.add(100);
list.add(400);
list.add(500);
list.add(100);
list.add(300);
list.add(100);
ArrayList list1 = listDealte(list);
System.out.println(list == list1);
System.out.println(list1);
}
private static ArrayList listDealte(ArrayList<Integer> list) {
for (int i = 0; i < list.size(); i++) {
Integer ele = list.get(i);
if(list.indexOf(ele)!=list.lastIndexOf(ele)){
list.remove(ele);
return listDealte(list);
}
}
return list;
}
}
运行结果为:
true
[200, 400, 500, 300, 100]
方法二
按照元素删除重复的
import java.util.ArrayList;
import java.util.Comparator;
public class Mytest1 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(100);
list.add(100);
list.add(100);
list.add(100);
list.add(200);
list.add(100);
list.add(400);
list.add(500);
list.add(100);
list.add(300);
list.add(100);
list.add(100);
list.add(200);
list.add(100);
list.add(400);
list.add(500);
list.add(100);
list.add(300);
list.add(23);
list.add(100);
for (int i = 0; i < list.size()-1; i++) {
for (int j = i+1; j < list.size(); j++) {
Integer a = list.get(i);
Integer b = list.get(j);
if(a.equals(b)){
list.remove(b);
j=i+1;
}
}
}
System.out.println(list);
}
}
运行结果为:
[200, 400, 500, 300, 23, 100]
方法三
按照索引删除
import java.util.ArrayList;
import java.util.Comparator;
public class Mytest1 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(100);
list.add(100);
list.add(100);
list.add(100);
list.add(200);
list.add(100);
list.add(400);
list.add(500);
list.add(100);
list.add(300);
list.add(100);
list.add(100);
list.add(200);
list.add(100);
list.add(400);
list.add(500);
list.add(100);
list.add(300);
list.add(23);
list.add(100);
for (int i = 0; i < list.size()-1; i++) {
for (int j = i+1; j < list.size(); j++) {
Integer a = list.get(i);
Integer b = list.get(j);
if(a.equals(b)){
list.remove(j);
j--;
}
}
}
System.out.println(list);
}
}
运行结果为:
[100, 200, 400, 500, 300, 23]