A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我想删除重复的元素,视频里用的是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;
        }        
}

评分

参与人数 1黑马币 +20 收起 理由
sunshine9091 + 20 很给力!

查看全部评分

6 个回复

倒序浏览
一条注释都没有,谁看着都头大!
你比较的Person是自定义对象,需要重新equals方法,否则系统默认的是比较地址值
回复 使用道具 举报
代码好多,看不懂
回复 使用道具 举报
看不懂,刚刚学习
回复 使用道具 举报
本帖最后由 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方法
回复 使用道具 举报
{:3_46:} 注释啊
回复 使用道具 举报
与谁 中级黑马 2015-9-14 23:39:52
7#
完全看不懂,也一点不想看,现在终于明白为什么老师说注释很重要.....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马