黑马程序员技术交流社区

标题: 请大家帮我看一题,万分感谢! [打印本页]

作者: 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