Java中ArrayList去重方法
方法一:
该方法不需要重新创建新的数组可以直接遍历
public class TestCopy {
public static void main(String[] args){
ArrayList<String> list = new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
list.add("田七");
list.add("朱八");
list.add("王一");
list.add("李四");
list.add("王五");
list.add("王五");
list.add("王一");
for (int i = 0; i < list.size(); i++) {
// 取出一个元素
String val = list.get(i);
System.out.println("i:"+val+"\t");
// 循环取出str元素之后的其他元素进行对比
for (int j = i+1; j < list.size(); j++) {
String s = list.get(j);
System.out.print("j:"+s);
// 比较两个元素是否相等
if (val.equals(s)){
// 相等则移除该元素
list.remove(val);
// 由于移除后其他元素前移,所以需要重新--回到原位
i--;
}
}
System.out.println("\n====================");
}
System.out.println("去重后:"+list);
}
}
方法二:
创建两个数组,一个是旧数组,存着没去重的值;一个是新数组,存去重后的值
public class TestCopy {
public static void main(String[] args){
// 创建两个数组一个存一个取,一个是去重前的数组,一个是去重后的数组
ArrayList<String> list = new ArrayList<>();
ArrayList<String> list1 = new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
list.add("田七");
list.add("朱八");
list.add("王一");
list.add("李四");
list.add("王五");
for (String s : list) {
// 取出原数组中的元素进行对比,如果新数组中存在就不存,不存在存入新数组中
if (!list1.contains(s)){
// 如果新数组中存在则不存
list1.add(s);
}
}
System.out.println("去重前:"+list);
System.out.println("去重后:"+list1);
}
}
方法三:
使用set去重
public class TestCopy {
public static void main(String[] args){
ArrayList<String> list = new ArrayList<>();
LinkedHashSet<String> set = new LinkedHashSet<>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
list.add("田七");
list.add("朱八");
list.add("王一");
list.add("李四");
list.add("王五");
// 储存到set中去重
for (String s : list) {
set.add(s);
}
list.clear();
for (String s : set) {
// 再将set中的值储存进list中,方便使用
list.add(s);
}
System.out.println(list);
}
}