黑马程序员技术交流社区
标题:
请大家帮我看一题,万分感谢!
[打印本页]
作者:
13160123235
时间:
2015-9-14 21:44
标题:
请大家帮我看一题,万分感谢!
我想删除重复的元素,视频里用的是ArrayList这个容器,但是我用StringBuffer为什么不对呢,我想了好久,还是无果,请大神给点建议,非常感谢!代码如下:
import java.util.ArrayList;
import java.util.Iterator;
public class PersonDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p1 = new Person("lishi1",23);
ArrayList al = new ArrayList();
al.add(p1);
al.add(new Person("lishi2",23));
al.add(new Person("lishi3",34));
al.add(new Person("lishi2",23));
al.add(new Person("lishi5",25));
al.add(new Person("lishi6",27));
StringBuffer sb = new StringBuffer();
Iterator it = al.iterator();
while(it.hasNext()){
Person p=(Person)it.next();
if(!sb.equals(p)){
sb.append(p);
}
}
System.out.println(sb.toString());
}
}
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = 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;
}
}
作者:
Adualtbird
时间:
2015-9-14 21:50
一条注释都没有,谁看着都头大!
你比较的Person是自定义对象,需要重新equals方法,否则系统默认的是比较地址值
作者:
往事如风555
时间:
2015-9-14 23:14
代码好多,看不懂
作者:
WOJIAOLIZHEN01
时间:
2015-9-14 23:18
看不懂,刚刚学习
作者:
boboyuwu
时间:
2015-9-14 23:21
本帖最后由 boboyuwu 于 2015-9-14 23:25 编辑
完全不一样的东西你非要这样用 你想一想 !( al(arraylist).contains(Object obj)) contains底层会调用obj.equals 比较
al里面所有的元素, 你用stringbuffer.equals()比较一个元素无非就是拿stringbuffer对象地址比较那个元素地址一点意义也没有,如果真的要实现第一写一个子类继承stringbuffer然后重写equals方法,第二需要你自己写一个方法循环遍历去判断obj跟stringbuffer里面的每一个元素进行equals比较,这样就可以实现了,但是stringbuffer无法继承,也就是说你无法重写equals方法
作者:
磊子
时间:
2015-9-14 23:30
{:3_46:} 注释啊
作者:
与谁
时间:
2015-9-14 23:39
完全看不懂,也一点不想看,现在终于明白为什么老师说注释很重要.....
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2