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

迭代器遍历的 代码示例
迭代器 用来遍历