ArrayList:去除集合中字符串的重复值 LinkedList:去除集合中自定义对象的重复值



import java.util.ArrayList;

/*
 * ArrayList:去除集合中字符串的重复值(字符串的内容相同)
 * 
 * 数组的长度:数组名.length;
 * 字符串的长度:字符串对象.length();
 * 集合的长度:集合对象.size();
 */
public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("张三");
        list.add("张三");
        list.add("李四");
        list.add("李四");
        list.add("王五");
        System.out.println(list);//[张三, 张三, 李四, 李四, 王五]
        //method1(list);
        method2(list);
        
        System.out.println(list);//[张三, 李四, 王五]
    }

    //2.拿前面的元素和后面的元素进行比较,发现后面的元素和前面的元素值相等的话,就将后面的元素值进行删除
    private static void method2(ArrayList<String> list) {
        for(int i=0; i<list.size()-1; i++){
            for(int j=i+1; j<list.size(); j++){
                //如果前面的元素和后面的元素相等的话,就删除后面的元素
                if(list.get(i).equals(list.get(j))){
                    list.remove(j);
                    //又因为集合的长度是动态变化的,所以j对应的元素值删除之后,j的索引需要-1
                    j--;
                }
            }
        }
    }

    //1.创建一个新的集合,然后遍历原有的集合元素,判断当前的元素是否包含在新集合中,如果不包含就添加到新集合中
    private static void method1(ArrayList<String> list) {
        ArrayList<String> list2 = new ArrayList<String>();
        for(int i=0; i<list.size(); i++){
            String value = list.get(i);
            if(!list2.contains(value)){
                list2.add(value);
            }
        }
        System.out.println(list2);//[张三, 李四, 王五]
    }
}
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;

//LinkedList:去除集合中自定义对象的重复值(对象的成员变量值都相同)
public class LinkedListTest {

    public static void main(String[] args) {
        LinkedList<Person> list = new LinkedList<Person>();
        list.add(new Person("张三", 18, '男'));
        list.add(new Person("张三", 18, '男'));
        list.add(new Person("李四", 18, '男'));
        list.add(new Person("李四", 20, '男'));
        list.add(new Person("李四", 18, '男'));
        list.add(new Person("张三", 28, '男'));
        Iterator<Person> iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
        System.out.println("----------------------------------");

        method2(list);
        
        iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }

    //2.将前面的元素值和剩余的元素值进行比较,一旦相等就将后面的元素值进行删除
    private static void method2(LinkedList<Person> list) {
        for(int i=0; i<list.size()-1; i++){
            for(int j=i+1; j<list.size(); j++){
                if(list.get(i).equals(list.get(j))){
                    list.remove(j);
                    //又因为集合的长度是动态变化的,所以j对应的元素值删除之后,j的索引需要-1
                    j--;
                }
            }
        }
    }

    // 1.创建一个新的集合,然后遍历原始集合中的元素,然后判断当前元素是否包含在新集合中,如果不包含就将元素添加到新集合中
    private static void method1(LinkedList<Person> list) {
        ArrayList<Person> list2 = new ArrayList<Person>();
        for (int i = 0; i < list.size(); i++) {
            Person p = list.get(i);
            if (!list2.contains(p)) {
                list2.add(p);
            }
        }
        Iterator<Person> iterator = list2.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }

}
public class Person {
    private String name;
    private int age;
    private char sex;
    public Person() {
        super();
    }
    public Person(String name, int age, char sex) {
        super();
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public char getSex() {
        return sex;
    }
    public void setSex(char sex) {
        this.sex = sex;
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", sex=" + sex + "]";
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Person other = (Person) obj;
        if (age != other.age)
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        if (sex != other.sex)
            return false;
        return true;
    }
    
}
原文地址:https://www.cnblogs.com/ll1994/p/8306068.html