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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sunshine9091 中级黑马   /  2014-8-10 18:57  /  1629 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

5 个回复

倒序浏览
  1. if(!sb.equals(p)){
复制代码

你这里判断一个容器中是否包含某个对象是错误的,应该用contains
equals,比较的是容器和你要添加的对象了,当然不相等,全都加进去了,所以没有去重

点评

但是StringBuffer没有contains方法吧?  发表于 2014-8-10 19:30
回复 使用道具 举报
把equals改成contains就好
回复 使用道具 举报
啊哈  看出来了,容器sb陆续添加,出了前两个有可能等吧,后面的sb只会有更多lisi存着不可能判断出相同了,对吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马