package com.atguigu.java1;
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 Dxkstart
* @create 2021-05-19 15:30
*/
public class IteratorTest {
@Test
public void test() {
Collection coll = new ArrayList();
coll.add("AA");
coll.add(123);
coll.add(new String("Tom"));
coll.add(new Person("Jerry", 20));
coll.add(false);
Iterator iterator = coll.iterator();
//方式一:
// System.out.println(iterator.next());//按顺序一个一个输出
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
//方式二:不推荐
// for(int i = 0;i<coll.size();i++){
// System.out.println(iterator.next());
// }
//方式三:推荐
while (iterator.hasNext()) {
//next():①指针下移 ②将下移以后集合位置上的元素返回
System.out.println(iterator.next());
}
}
@Test
public void test2() {
Collection coll = new ArrayList();
coll.add("AA");
coll.add(123);
coll.add(new String("Tom"));
coll.add(new Person("Jerry", 20));
coll.add(false);
//错误方式一:
Iterator iterator = coll.iterator();
// while((iterator.next()) != null){
// System.out.println(iterator.next());
// }
//错误方式三:
//集合对象每次调用iterator()方法都得到一个全新的迭代器对象,
// 默认游标都在集合的第一个元素之前。
// while(coll.iterator().hasNext()){
// System.out.println(coll.iterator().next());
// }
}
//测试Iterator中的remove()
@Test
public void test3() {
Collection coll = new ArrayList();
coll.add("AA");
coll.add(123);
coll.add(new String("Tom"));
coll.add(new Person("Jerry", 20));
coll.add(false);
//删除集合中的"Tom"
Iterator iterator = coll.iterator();
while(iterator.hasNext()){
Object obj = iterator.next();
if("Tom".equals(obj)){
iterator.remove();
}
}
System.out.println("****");
iterator= coll.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
package com.atguigu.java1;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collection;
/**
* JDK 5.0 新增了foreach循环,用于遍历集合、数组
*
* @author Dxkstart
* @create 2021-05-19 17:08
*/
public class ForTest {
@Test
public void test1(){
Collection coll = new ArrayList();
coll.add("AA");
coll.add(123);
coll.add(new String("Tom"));
coll.add(new Person("Jerry", 20));
coll.add(false);
//for(集合元素的类型 局部变量 :集合对象)
//内部仍然调用了迭代器。
for(Object obj : coll){
System.out.println(obj);
}
}
@Test
public void test2(){
int[] arr = new int[]{1,2,3,4,5,6,7};
//for(数组元素的类型 局部变量 :数组对象)
// for(Object obj){
for(int i : arr){
System.out.println(i);
}
}
//练习题
@Test
public void test3(){
String[] arr = {"MM", "MM", "MM", "MM", "MM"};
// //方式一:普通for赋值
// for(int i = 0;i<arr.length;i++){
// arr[i] = "GG";
// }
//
// for(int i = 0;i<arr.length;i++){
// System.out.println(arr[i]);//"GG"
// }
//方式二:增强for赋值
for(String str : arr){
str = "GG";
}
for(String str : arr){
System.out.println(str);//"MM"
}
}
}