package collection; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; /** * @author Xinny * @create 2021-09-29 11:48 上午 */ public class ListTest { //用于存放备选课程的list public List coursesToSelect; public ListTest() { this.coursesToSelect = new ArrayList(); } //添加课程 public void testInsert() { //创建课程对象 Course c1 = new Course("1", "C++"); coursesToSelect.add(c1); Course temp = (Course) coursesToSelect.get(0); System.out.println("add" + temp.id + ":" + temp.name); Course c2 = new Course("2", "Python"); coursesToSelect.add(0, c2); Course temp2 = (Course) coursesToSelect.get(0); System.out.println("添加了课程:" + temp2.id + ":" + temp2.name); Course[] course = { new Course("3", "Java"), new Course("4", "Vue")}; coursesToSelect.addAll(Arrays.asList(course)); Course temp3 = (Course) coursesToSelect.get(2); Course temp4 = (Course) coursesToSelect.get(3); System.out.println("add two course:" + temp3.id + ";" + temp3.name + ";" + temp4.id + ";" + temp4.name); Course[] course2 = {new Course("5", "高数"), new Course("6", "大英")}; coursesToSelect.addAll(2, Arrays.asList(course2)); Course temp5 = (Course) coursesToSelect.get(2); Course temp6 = (Course) coursesToSelect.get(3); System.out.println("add two course:" + temp5.id + ";" + temp5.name + ";" + temp6.id + ";" + temp6.name); } public void testGet() { int size = coursesToSelect.size(); System.out.println("now have:"); for (int i = 0; i < size; i++) { Course cr = (Course) coursesToSelect.get(i); System.out.println("course:" + cr.id + ":" + cr.name); } } //通过迭代器来遍历list public void testIterator() { Iterator it = coursesToSelect.iterator(); System.out.println("now have:"); while (it.hasNext()) { Course cr = (Course) it.next(); System.out.println("course:" + cr.id + ":" + cr.name); } } //通过for each方法访问集合元素 public void testForEach() { System.out.println("now have (for each):"); for (Object obj : coursesToSelect) { Course cr = (Course) obj; System.out.println("course: " + cr.id + ";" + cr.name); } } //修改list中的元素 public void testModify(){ coursesToSelect.set(4,new Course("7","编译原理")); } //删除list中的元素 public void testDelete(){ //方法1 /**Course cr=(Course)coursesToSelect.get(4); System.out.println("我是课程:"+cr.id+";"+cr.name+",我即将被删除"); coursesToSelect.remove(cr);*/ //方法2 /**System.out.println("即将删除4位置上的课程"); coursesToSelect.remove(4); System.out.println("成功删除课程!");*/ //方法3 System.out.println("delete index=4 and index = 5 course"); Course[] courses={(Course)coursesToSelect.get(4),(Course)coursesToSelect.get(5)}; coursesToSelect.removeAll(Arrays.asList(courses));//将数组转换为集合 System.out.println("delete success!"); testForEach(); } public static void main(String[] args) { ListTest it=new ListTest(); it.testInsert(); it.testGet(); it.testIterator(); it.testForEach(); it.testModify(); it.testForEach(); it.testDelete(); } }
使用Foreach进行遍历时,由于一个数据存入List后,它的类型被忽略,所以遍历时要用Object类型
遍历:loop或iterator/for each
Iterator:Collection的iterator()方法获得迭代器,属于Iterator接口类型
hasNext(): 若有下个元素返回True
next():走到并返回下个元素,需要手动转换类型
三种遍历集合的方式:
其中,Course是课程类,couresesToSelect是List的实例化对象,里面放着Course类的对象
/** * get()方法遍历集合 */ public void testGet(){ int size = coursesToSelect.size(); System.out.println("有待选课程如下(get方法):"); for(int i = 0; i < size; i++){ Course cr = (Course)coursesToSelect.get(i); System.out.println("课程:"+cr.id+":"+cr.name); } } /**、 * 使用迭代器来遍历集合 */ public void TestIterator(){ Iterator it = coursesToSelect.iterator(); System.out.println("有待选课程如下(迭代器方法):"); while(it.hasNext()){ Course cr = (Course)it.next(); System.out.println("课程:"+cr.id+":"+cr.name); } } /** *通过for each方法遍历集合 */ public void testForEach(){ System.out.println("有待选课程如下(for each方法):"); for(Object obj: coursesToSelect){ Course cr = (Course)obj; System.out.println("课程:"+cr.id+":"+cr.name); } }
从list中取数据
get方法,要注意转化类型
public void testGet(){ int size = coursesToSelect.size(); System.out,orintl("有以下课程可选"); for(int i=0;i<size,i++) Course cr = (Course)coursesT0oSelect.get(i); System.out.printl("课程:"+cr.id+"."+cr.name); } public static void main(String[] args){ ListTest lt = new ListTest(); lt.testAdd(); lt.testGet(); lt.testIterator(); } }
public void testGet(){ int size = coursesToSelect.size(); for(int i=0;i<size;i++){ Course cr = (Course)cursesToSelect.get(i); System.out.println("课程:"+cr.id+":"+cr.name); } }
通过for each方法访问集合元素
通过Iterator迭代器访问List
获取List中的所有元素
通过迭代器(Iterator)来遍历:
it = coursesToSelect.iterator(); while (){ Course cr = (Course) it.next(); System.out.println(cr.getId() + cr.getName()); }
foreach方法:
for ( obj: coursesToSelect) { Course cr = obj; System.out.println(cr.getId() + cr.getName()); }
通过迭代器来遍历
Iterator it=list.iterator();
while(it.hasNext()){
Course course= (Course)it.next();
System.out.println(course.id+course.name);
foreach方法
for(Object obj:link){
Course course = (Course) obj;
System.out.println(course.id+course.name);
}
当一个元素进了一个集合,就成了Object,所以 前面的操作需要强制转换,foreach 用Object类型
迭代器 iterator方法遍历集合
get方法遍历集合中的元素
一个变量 存到集合中的时候 他的类型是被忽略了的
遍历集合的几种方式:
iterator实例
2.for each 注意需要强制转换
遍历集合中的所有元素有三种方法:
for循环 、Iterator方法和for each方法
迭代器 iterator使用
List 的size()方法可以取得长度
访问List中的元素就用List的get()方法
Iterator 本身也是接口
public void testIterator(){ Iterator it =new CoursesToSelect.iterator(); while(it.hasNext()){ Course cr=(Course)it.next(); /*类的对象可以通过 对象.元素 调用*/ System.out.println("课程:"+cr.id+":"+cr.name); } 写完之后要在main()方法中调用,用本类创建对象,用对象调用 迭代器是依赖集合存在的,不能独立存在 }
迭代器的意思
/*通过for each 方法访问集合元素*/
public void testForEach(){
for (Object obj:coursesToSelect){
Course cr=(Course)it.obj;
System.out.println("课程:"+cr.id+":"+cr.name);
}
}
get方法
迭代器,接口遍历集合中的元素
迭代器Iterator遍历list
Iterator it=list对象.iterator(); while(it.hasNext()){ (元素类型) od1=(元素类型)it.next(); System.out.println(ob1.toString()); }
通过foreach遍历
for(Object obj:list对象){ (类型强制转换)obj; System.out.println(); }
for each方法是iterate(迭代器遍历)得宜中简便用法
Iterator遍历
Iterator遍历:
foreach遍历List
迭代器遍历的 代码示例
迭代器 用来遍历