qq_咦呆着啊_0
2016-05-10 09:30
为什么删除集合中的元素,首先要定义一个数组,然后调用集合的removeAll() 然后把这个数组转换成list传进去,这是为什么呢
因为list在循环中的时候是不可以删除它的元素的
其实更简单的就是使用迭代器Iterator, 然后用迭代器remove
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();
}
} 还可以添加循环一直进行输入的哈,
你要删除的是那个集合中的元素,肯定要先取出来(由于不是泛型还需)强制转换成Course类型的,而且removeAll(collection c)传进去的是list的实例吧,你还需要把数组变成list对象。最后运用这个方法。

我觉得还可以直接让用户输入要删除的课程号或者名字,用remove()直接进行删除,当然怎样实现可以想一下。
想清空list序列集合中的所有元素可以用clear()方法,此API函数返回值是void。
Java入门第三季
409776 学习 · 4546 问题
相似问题
回答 2
回答 1