黑马程序员技术交流社区

标题: 关于集合中的一点小问题 [打印本页]

作者: 向日葵的曙光    时间: 2014-4-14 22:41
标题: 关于集合中的一点小问题
public class CollectionDemo1 {
        public static void main(String[] args) {
                method_get();
        }
public static void method_get(){
                ArrayList alList=new ArrayList();
                ArrayList alList1=new ArrayList();
                Person p1=new Person("张珊",18);
                Person p2=new Person("王五",20);
                alList.add(p1.getName()+":"+p1.getAge());
                alList.add(p2.getName()+":"+p2.getAge());
                alList.add("java001");
                Iterator it=alList.iterator();
                while(it.hasNext()){
                        Object object=it.next();
                        if(object.equals("java001")){
                                it.remove();
                        }
                        System.out.println("原集合:"+object);
                }
}
class Person{
        private String name=null;
        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;
        }
        private int age=0;
        Person(String name,int age) {
                this.name=name;
                this.age=age;
        }
       
}
元集合输出时为啥又把删除的那个元素输出来了,求解释,最好能够详细点
作者: Silent_memory    时间: 2014-4-14 22:56
public static void method_get() {
                ArrayList alList = new ArrayList();
                Person p1 = new Person("张珊", 18);
                Person p2 = new Person("王五", 20);
                alList.add(p1.getName() + ":" + p1.getAge());
                alList.add(p2.getName() + ":" + p2.getAge());
                alList.add("java001");
                Iterator it = alList.iterator();
                while (it.hasNext()) {
                        Object object = it.next();
                        if (object.equals("java001")) {
                                it.remove();
                        }
                        System.out.println("原集合:" + object);
                }
        }
你输出的是while循环中的变量object,而不是list中的,你remove的操作删除的list中的元素,但是你输出的变量,当然能输出了。在后面加个输出新list的循环,就没有你删除的元素了

                for (Object object : alList) {
                        System.out.println("原集合:" + object);
                }
作者: 杨庆雷    时间: 2014-4-14 23:31
import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListTest{
        public static void method_get() {
            ArrayList<String> alList = new ArrayList<String>();
            alList.add("java001");
            alList.add("java002");
            Iterator<String> it = alList.iterator();
            while (it.hasNext()) {
                    if (it.next().equals("java001")) {
                            it.remove();
                    }
                    System.out.println("原集合:"+it.next());
            }
        }
        public static void main(String[] args) {
                method_get();
        }
}


作者: jsjchenlong    时间: 2014-4-15 00:01
Silent_memory 这哥们说的是对的,首先你要搞清楚,你要做什么事情,把思路理清了,写下来。就ok了





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2