package com.qiaoyx.java;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* 集合元素的遍历操作,使用迭代器Iterator接口
* 1.内部的方法:hasNext() 和 next()
* 2.集合对象每次调用iterator()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前
* 3.内部定义了remove(),可以在遍历的时候删除集合中的元素。此方法不同于集合调用的remove()
* @author: qyx
* @date: 2022-08-03 11:02
* @desc:
*/
public class IteratorTest {
@Test
public void test1(){
Collection collection = new ArrayList();
collection.add(123);
collection.add(456);
collection.add(new String("Tom"));
collection.add(false);
Iterator iterator = collection.iterator();
//方式一:
System.out.println(iterator.next());
System.out.println(iterator.next());
System.out.println(iterator.next());
System.out.println(iterator.next());
//报异常:NoSuchElementException
// System.out.println(iterator.next());
//方式二:不推荐
for (int i = 0; i < collection.size(); i++) {
System.out.println(iterator.next());
}
//方式三:推荐
//hasNext():判断是否还有下一个元素
while (iterator.hasNext()){
//next():1.指针下移2.将下移以后集合位置上的元素返回
System.out.println(iterator.next());
}
}
@Test
public void test2(){
Collection collection = new ArrayList();
collection.add(123);
collection.add(456);
collection.add(new String("Tom"));
collection.add(false);
Iterator iterator = collection.iterator();
}
//测试Iterator中的remove()
//调用remove之前要确保迭代器调用过next。指针有指向。指针在同一位置不能执行两次remove()
@Test
public void test3(){
Collection collection = new ArrayList();
collection.add(123);
collection.add(456);
collection.add(new String("Tom"));
collection.add(false);
Iterator iterator = collection.iterator();
while (iterator.hasNext()){
Object obj = iterator.next();
if("Tom".equals(obj)){
iterator.remove();
}
}
iterator = collection.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
package com.qiaoyx.java;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collection;
/**
* jdk5.0新增了增强for循环,用于遍历数组和集合
* @author: qyx
* @date: 2022-08-03 18:07
* @desc:
*/
public class ForTest {
@Test
public void test1(){
Collection collection = new ArrayList();
collection.add(123);
collection.add(456);
collection.add(new String("Tom"));
collection.add(false);
//for(集合中元素的类型 局部变量 : 集合对象)
for(Object obj:collection){
System.out.println(obj);
}
}
@Test
public void test2(){
int[] arr = new int[]{1,2,3,4,5,6};
//for(数组中元素的类型 局部变量 : 数组对象)
for(int num: arr){
System.out.println(num);
}
}
//练习题
@Test
public void test3(){
String[] arr = new String[]{"MM","MM","MM"};
//方式一:普通for赋值
// for(int i = 0; i < arr.length; i++){
// arr[i] = "GG";
// }
//方式二:增强for赋值
for (String str : arr){
str = "GG";
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}