用Java实现:创建一个ArrayList对象,往里面存储元素,需要去除重复。

用Java实现:创建一个ArrayList对象,往里面存储元素,需要去除重复。,第1张

/
程序头部注释开始
程序的版权和版本声明部分
Copyright (c) 2011, 烟台大学计算机学院学生
All rights reserved
文件名称:将自定义对象作为元素存到ArrayList集合中,并去除重复元素
作 者:薛广晨
完成日期:2012 年 10 月 16 日
版 本号:x10
对任务及求解方法的描述部分
输入描述:
问题描述: 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。
比如:存人对象。同姓名同年龄,视为同一个人。为重复元素。
思路:
1,对人描述,将数据封装进人对象。
2,定义容器,将人存入。
3,取出。
程序输出:
程序头部的注释结束
/
import javautil;
class Person
{
private String name;
private int age;
public Person(String name, int age)
{
thisname = name;
thisage = age;
}
public String getName()
{
return thisname;
}
public int getAge()
{
return thisage;
}
public void setName(String name)
{
thisname = name;
}
public void setName(int age)
{
thisage = age;
}
public boolean equals(Object obj)//重写equals方法
{
if(!(obj instanceof Person))
{
return false;
}
Person p = (Person)obj;
return thisnameequals(pname) && thisage == page;
}
}
class ArrayListTest2
{
public static void main(String[] args)
{
ArrayList al = new ArrayList();
aladd(new Person("lisi01",20));
aladd(new Person("lisi02",21));
aladd(new Person("lisi04",22));
aladd(new Person("lisi03",23));
aladd(new Person("lisi02",21));
aladd(new Person("lisi04",22));
sop("原集合:");
for(Iterator it = aliterator(); ithasNext();)
{
Person p = (Person) itnext();
sop("name:" + pgetName() + " :: age:" + pgetAge());
}
al = singleElement(al);
sop("新集合:");
for(Iterator it = aliterator(); ithasNext();)
{
Person p = (Person) itnext();
sop("name:" + pgetName() + " :: age:" + pgetAge());
}
}
public static ArrayList singleElement(ArrayList al)
{
ArrayList newAl = new ArrayList();
for(Iterator it = aliterator(); ithasNext();)
{
Object obj = itnext();
if(!newAlcontains(obj))
{
newAladd(obj);
}
}
return newAl;
}
public static void sop(Object obj)
{
Systemoutprintln(obj);
}
}

Set中的对象不按特定方式排序,并且没有重复对象。但它的有些实现类能对集合中的对象按特定方式排序,例如TreeSet类,它可以按照默认排序,也可以通过实现javautilComparator<Type>接口来自定义排序方式。Set中不能有重复对象,那么它是如何判断要加入到集合中的对象是否重复呢?当要加入一个对象到Set集合中时,会先调用该对象的hashcode()方法,根据hashcode来确定该对象应该放在哪个内存地址上。如果计算出的内存地址中已经放入了对象,那说明这两个对象相同,就不会将这个对象加入到集合中。如果计算出的内存地址中没有放入对象,则调用该对象的equals()方法,把它与集合中每一个对象进行比较,看这两个对象是否相同。如果相同,则不加入这个对象到Set集合中。如果不同则加入该对象。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13411652.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-31
下一篇 2023-07-31

发表评论

登录后才能评论

评论列表(0条)

保存