java ArrayList去重案例

Posted hongxiao2020

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java ArrayList去重案例相关的知识,希望对你有一定的参考价值。

去除重复元素:

    public static ArrayList singleElement(ArrayList al) {
        //定义一个临时容器
        ArrayList newAl = new ArrayList();
        Iterator it = al.iterator();
        while (it.hasNext()) {
            Object obj = it.next();
            if (!newAl.contains(obj)) {
                newAl.add(obj);
            }
        }
        return newAl;
    }

自定义对象作为元素存到ArrayList中,并去除重复元素。

比如:存人对象。同姓名同年龄,视为同一个人,去除重复。

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

public class ArrayListDemo {
    public static void main(String[] args) {
        ArrayList al = new ArrayList();
        al.add(new Person("lisi01", 30));
        al.add(new Person("lisi02", 31));
        al.add(new Person("lisi03", 32));
        al.add(new Person("lisi04", 33));
        al.add(new Person("lisi04", 33));
        al.add(new Person("lisi04", 33));
        al = singleElement(al);
        Iterator it = al.iterator();
        while (it.hasNext()) {
            Person p = (Person) it.next();
            System.out.println(p.getName() + "--" + p.getAge());
        }

    }

    public static ArrayList singleElement(ArrayList al) {
        //定义一个临时容器
        ArrayList newAl = new ArrayList();
        Iterator it = al.iterator();
        while (it.hasNext()) {
            Object obj = it.next();
            if (!newAl.contains(obj)) {
                newAl.add(obj);
            }
        }
        return newAl;
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof Person))
            return false;
        Person p = (Person) obj;
        return this.getName().equals(p.name) && this.getAge() == p.age;
    }


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

List集合判断元素是否相等,依据是元素的equals方法,contains调用的底层是equals方法,remove调用底层也是equals方法。

 

以上是关于java ArrayList去重案例的主要内容,如果未能解决你的问题,请参考以下文章

java ArrayList去重

java ArrayList去重

MapReduce经典案例—数据去重

ArrayList去重常用的四种方式及性能对比(JMH性能分析)

List去重的五种方式

Java通过ArrayList的contains(Object o)方法实现去重字符串中的字符