`
huobengluantiao8
  • 浏览: 1033821 次
文章分类
社区版块
存档分类
最新评论

ArrayList方法使用继续举例

 
阅读更多

对于这个方法,还请各位朋友多多指点,对于这个例子,饿还是有点不太明白,对于使用equals方法的使用和例子中出现的多态编译失败的现象,代码是可以运行通过的!

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

比如:有人对象,同姓名同年龄,视为同一人,为重复元素。

思路:
1,对人描述,将数据封装进入对象。
2,定义容器,将人存入。
3,取出。


List集合判断元素是否相同,依据是元素的equals方法。
*/


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

//重写equals方法
//此处的equals的是Person类中的方法
public boolean equals(Object obj)//布尔型覆盖父类中的object的equals方法
{
if(!(obj instanceof Person))
return false;

Person p = (Person)obj;

System.out.println(this.name+"...."+p.name);

//此处equals方法是字符串中的方法,字符串可以调用equals方法
return this.name.equals(p.name) && this.age == p.age;
}

public String getName()
{
return name;
}
public String getAge()
{
return age;
}
}
class ArrayListTest2
{
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add(new Person("lisi01",30))//al.add(Object obj);//Object obj = new Person("lisi01",30);
//Object obj = new Person("lisi01",30)提升了
al.add(new Person("lisi02",32));
al.add(new Person("lisi02",32));
al.add(new Person("lisi03",33));
al.add(new Person("lisi04",35));
al.add(new Person("lisi04",35));

al.add(new Person("lisi04",35));

al = singleElement(al);//去除重复的数据,它只判断往容器里面存的对象是否相同
//而判断对象是否相同用的是equals方法

//sop("remove 03:"+al.remove(new Person("lisi03",33)));将移除lisi03,33的数据

Iterator it = al.iterator();

while(it.hasNext())
{
//next返回的类型时Object,但是Object里面没有getName方法,多态编译失败
//sop(it.next().getName()+"::"+it.next()/getAge())

Person p = (Person)it.next();//针对于52行和71行问题报错的解决方案,类型转换
sop(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();

//容器中包含某元素用contains
if(!newAL.contains(obj))
newAL.add(obj);
}
return newAL;
}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics