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;
    }
    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM