删除集合中的元素

来源:4-9 学生选课---应用泛型管理课程 Ⅰ

qq_咦呆着啊_0

2016-05-10 09:30

为什么删除集合中的元素,首先要定义一个数组,然后调用集合的removeAll()  然后把这个数组转换成list传进去,这是为什么呢

写回答 关注

4回答

  • Joe_5927
    2016-05-10 10:58:30
    已采纳

    因为list在循环中的时候是不可以删除它的元素的
    其实更简单的就是使用迭代器Iterator, 然后用迭代器remove

    qq_咦呆着...

    非常感谢!

    2016-05-10 12:08:38

    共 1 条回复 >

  • 如果繁星能来到我身边
    2016-05-10 13:24:22
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Scanner;
    
    import org.omg.CORBA.PUBLIC_MEMBER;
    public class ListTest {
    
    	public List listSelect;
    	public ListTest(){
    		this.listSelect=new ArrayList();//因为List是个借口不能直接实例化,就运用到了这个接口的一个实现类
    		                           //ArrayList的实现类趋势线这个接口;
    	}
    	public void listAdd(){
    		chilCourse chilCour=new chilCourse("D1","DW");
    		
    		Course []courses={
    //				chilCour,
    				new Course("A1","大学英语"),new Course("A2","大学语文"),
    				new Course("B1","高等数学"),new Course("C1", "线性代数"),
    				new Course("C2", "高等代数")};
    				listSelect.addAll(Arrays.asList(courses));
    				}
    				}
    		public void remove(){
    		System.out.println("请输入要删除的课程号码");
    		Scanner input=new Scanner(System.in);
    		String str1=input.next();
    		for(int i=0;i<listSelect.size();i++){
    			Course cour=(Course) listSelect.get(i);
    			String str2=(cour).getId();
    			if(str1.equalsIgnoreCase(str2)){
    				System.out.println("您即将要删除的课程名是:"+cour.getName()+"\n确定删除吗?");
    				String str3=input.next();
    				if(str3.equalsIgnoreCase("t")){
    //					listSelect.remove(i);
    					listSelect.remove(cour);
    					System.out.println("删除成功!");
    					iter();
    				}
    				else  
    					return;
    			}else  
    				continue;
    		}
    	}
    	public  void iter(){
    		 Iterator it=listSelect.iterator();
    		while(it.hasNext()){
    			Object c = it.next();
    				if((c.getClass()).getName().equalsIgnoreCase("Course")){
    					Course cw=(Course) c;
    					System.out.println(cw.getId()+
    							""+cw.getName());
    				}
    		//当添加了其他类型的对象进去的遍历方法;
    //			if((c.getClass()).getName().equalsIgnoreCase("Student")){
    //				Student stu=(Student) c;
    //				System.out.println(stu.getId()+
    //						""+stu.getName());}
    		}
    		}
    		public static void main(String[] args) {
               ListTest listTest=new ListTest();
               listTest.listAdd();
               System.out.println();
                listTest.iter();
                listTest.remove();
    	}
    
    }			

    还可以添加循环一直进行输入的哈,

    qq_随想之...

    真的很赞!

    2016-08-16 22:32:19

    共 4 条回复 >

  • 如果繁星能来到我身边
    2016-05-10 12:12:09

    你要删除的是那个集合中的元素,肯定要先取出来(由于不是泛型还需)强制转换成Course类型的,而且removeAll(collection c)传进去的是list的实例吧,你还需要把数组变成list对象。最后运用这个方法。

    http://img.mukewang.com/57315f940001d84310760220.jpg

    我觉得还可以直接让用户输入要删除的课程号或者名字,用remove()直接进行删除,当然怎样实现可以想一下。

  • 慕神3775235
    2016-05-10 11:15:55

    想清空list序列集合中的所有元素可以用clear()方法,此API函数返回值是void。

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题