欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

arraylist去重复,arraylist重复

来源: javaer 分享于  点击 8109 次 点评:217

arraylist去重复,arraylist重复


arraylist去重复

下面举一个去重复的例子,包括两方面,一个是普通类型的去重复,一个是自定义对象去重复

package com.xiongda;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/**
 * 
 * @author xiongda
 * @date 2018年8月12日
 * @description arraylist去重复
 */

class Student {
    private String name;

    private String age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Student other = (Student) obj;
        if (age == null) {
            if (other.age != null)
                return false;
        } else if (!age.equals(other.age))
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        return true;
    }

    @Override
    public String toString() {
        return name + " " + age;
    }

    public Student(String name, String age) {
        super();
        this.name = name;
        this.age = age;
    }

}

public class Confirm {

    private static ArrayList getSingle(ArrayList list) {
        ArrayList newList = new ArrayList();
        for (Object str : list) {
            if (!newList.contains(str)) {
                newList.add(str);
            }
        }
        return newList;
    }

    public static void main(String[] args) {
        // 普通类型去重复
        ArrayList<String> list = new ArrayList<>();
        list.add("123");
        list.add("456");
        list.add("123");
        list.add("456");
        list.add("789");

        ArrayList<String> newList = getSingle(list);
        System.out.println(newList.toString());

        // 自定义类型去重复
        ArrayList<Student> studentList = new ArrayList<>();
        studentList.add(new Student("dada", "10"));
        studentList.add(new Student("xiaoer", "11"));
        studentList.add(new Student("dada", "10"));
        studentList.add(new Student("xiaoer", "11"));
        ArrayList<Student> newStudentList = getSingle(studentList);
        System.out.println(newStudentList);
    }

}

输出结果如下:

普通类型去重复没什么好说的,遍历集合看是否存在于新集合中,在就不放进去,不在就放进去

至于自定义对象去重复,要小心这个contains方法,这个方法是遍历集合中每一个元素看是否找到相等的,它里面判断相等的方法是object中的equals方法,判断的是地址。所以,如果需要真正做到去重复,就得重写自定义对象中的equals方法,eclipse中可以之间在source中生成。

相关文章

    暂无相关文章

用户点评