去除ArrayList集合中的重复的元素(字符串对象、自定义对象)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013317445/article/details/81978471

字符串对象

创建新集合的思路

  1. 创建集合
  2. 创建字符串对象并添加对象到集合
  3. 创建新集合
  4. 遍历旧集合,获取集合中的每一个元素。
    拿这个元素到新的集合中去找,看有没有:有,不搭理;没有,添加这个元素到新集合。

  5. 遍历新集合

去除ArrayList集合中的重复的字符串:

import java.util.ArrayList;
import java.util.Iterator;

/**
 * @program: javalearnCode
 * @description: 去除集合中的重复字符串元素
 * @author: chen
 * @create: 2018-08-23 11:37
 **/
public class RmDuplicationString {
    public static void main(String[] args){
        //创建集合
        ArrayList array= new ArrayList();

        //创建字符串对象并添加对象到集合
        array.add("hello");
        array.add("world");
        array.add("java");
        array.add("world");
        array.add("java");
        array.add("world");
        array.add("world");
        array.add("world");
        array.add("world");
        array.add("java");

        //创建新集合
        ArrayList newArray= new ArrayList();

        //遍历旧集合,获取集合中的每一个元素
        //拿这个元素到新的集合中去找,看有没有:有,不搭理;没有,添加这个元素到新集合
        Iterator it= array.iterator();
        while(it.hasNext()){
            String s= (String)it.next();
            if(!newArray.contains(s)){
                newArray.add(s);
            }
        }

        //遍历新集合
        Iterator itn= newArray.iterator();
        System.out.print("newArray:");
        while(itn.hasNext()){
            String sn=(String)itn.next();
            System.out.print(sn+" ");  //hello world java
        }

    }
}

不创建新集合

输出错误

自定义对象

易出问题:出问题在!newArray.contains(s)这了
Note:contains方法的底层用的是equals()方法。没有重写Object类的equals()的话,默认比较的是地址值。

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

import java.util.ArrayList;
import java.util.Iterator;

public class RmDuplicationStudent {
    public static void main(String[] args){
        // 创建集合对象
        ArrayList array = new ArrayList();

        // 创建学生对象
        Student s1 = new Student("林青霞", 27);
        Student s2 = new Student("林志玲", 40);
        Student s3 = new Student("凤姐", 35);
        Student s4 = new Student("芙蓉姐姐", 18);
        Student s5 = new Student("翠花", 16);
        Student s6 = new Student("林青霞", 27);
        Student s7 = new Student("林青霞", 18);

        // 添加元素
        array.add(s1);
        array.add(s2);
        array.add(s3);
        array.add(s4);
        array.add(s5);
        array.add(s6);
        array.add(s7);

        //创建新集合
        ArrayList newArray= new ArrayList();

        //遍历集合获取集合中的每一个元素,拿到新集合中去
        //看新集合中,有没有,如果没有,则添加该元素到新集合,否则,不搭理
        //注意不要犯并发修改异常错误
        Iterator it= array.iterator();
        while(it.hasNext()){
            Student s= (Student)it.next();
            if(!newArray.contains(s)){ //--------在Student类里面要重写equals()方法 generate....
                newArray.add(s);
            }
        }

        //遍历新集合
        Iterator itn= newArray.iterator();
        while(itn.hasNext()){
            Student sn=(Student)itn.next();
            System.out.println(sn.getName()+ sn.getAge());
        }

    }
}

猜你喜欢

转载自blog.csdn.net/u013317445/article/details/81978471