码迷,mamicode.com
首页 > 其他好文 > 详细

去除ArrayList中的重复元素

时间:2014-09-14 00:01:06      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:style   ar   sp   on   c   amp   ad   new   size   

ArrayList中可以存在重复元素的,若要去除重复元素必须要进行扫描,其实在原理上和数组去除重复元素是一样的。

可以利用contains方法来确定ArrayList中是否存在某个元素。

但是ArrayList中可以放任意的对象,那怎么定义各个对象是否是相同的?

可以通过自己定义类的专属equals方法,定义规则确定某两个对象是否相同,因为contains在判断某个元素是否存在ArrayList中,也是在比较这个元素时候是否和容器中存在的元素相同,若相同则存在,若不相同则不存在,contains运行的基础是在equals的方法之上的!

首先定义Person类

class Person

{

????private String name;

????private int age;

?

????Person(String name, int age)

????{

????????this.name = name;

????????this.age = age;

????}

????//定义若两个人的名字和年龄相同则两个人相同

????public boolean equals(Object obj) //此方法是虚拟机自动调用的

????{

????????if(!(obj instanceof Person)) //此处先判断所判断元素是否属于Person

????????????return false;

?

????????Person p = (Person) obj;

?

????????return this.name.equals(p.name) && this.age==p.age; //若返回为真则说明二者相同

????}

?

????public String getName()

????{

????????return this.name;

????}

?

????public int getAge()

????{

????????return this.age;

????}

}

//这是主函数类

public class Test

{

????public static void main(String[] args)

????{

????????//声明一个容器,然后向其中添加4个元素

????????ArrayList<Person> al = new ArrayList<>();

????????al.add(new Person("zhangsan", 20));

????????al.add(new Person("lisi", 22));

????????al.add(new Person("zhangsan", 20));

????????al.add(new Person("lisi", 20));

?

????????ArrayList<Person> al2 = Test.operate(al);

?

????????Iterator<Person> it = al2.iterator();

?

????????while(it.hasNext())

????????{

????????????Person p = it.next();

????????????System.out.println(p.getName()+"--"+p.getAge());

????????}

????}

????//这个函数来处理用于去除相同元素

????public static ArrayList<Person> operate(ArrayList<Person> al)

????{

????????ArrayList<Person> newAl = new ArrayList<>();

?

????????Iterator<Person> it = al.iterator();

?

????????while(it.hasNext())

????????{

????????????Person p = it.next();

????????????if(!newAl.contains(p))

????????????????newAl.add(p);

????????}

?

????????return newAl;

????}

}

去除ArrayList中的重复元素

标签:style   ar   sp   on   c   amp   ad   new   size   

原文地址:http://www.cnblogs.com/fantasy01/p/3970529.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!