为了账号安全,请及时绑定邮箱和手机立即绑定

删除集合中的元素

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

正在回答

4 回答

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

0 回复 有任何疑惑可以回复我~
#1

qq_咦呆着啊_0 提问者

非常感谢!
2016-05-10 回复 有任何疑惑可以回复我~
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();
	}

}			

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

1 回复 有任何疑惑可以回复我~
#1

如果繁星能来到我身边

比较粗糙。还要改进的地方还有很多-.-//
2016-05-10 回复 有任何疑惑可以回复我~
#2

qq_咦呆着啊_0 提问者 回复 如果繁星能来到我身边

你为何如此的牛B
2016-05-10 回复 有任何疑惑可以回复我~
#3

如果繁星能来到我身边 回复 qq_咦呆着啊_0 提问者

我也是菜鸟,共勉共勉。。。
2016-05-10 回复 有任何疑惑可以回复我~
#4

qq_随想之风_03202251

真的很赞!
2016-08-16 回复 有任何疑惑可以回复我~
查看1条回复

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

http://img1.sycdn.imooc.com//57315f940001d84310760220.jpg

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

删除集合中的元素

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信