Iterator的用法分类

Iterator的用法分类

//hasNext判断是否有下一个元素
推荐使用
while(iterator.hasNext()){
//next() 指针下移 将下移后集合位置上的元素返回
system.out.println(iterator.next());
}

移除元素

实体类 pojo

person类

package com.atguigu.java8;

public class Person {
    public String name;
    public int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }


    public void setName(String name) {
        this.name = name;
    }


    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

测试迭代

package com.atguigu.java8;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class iterator {



    @Test
  public  void   test3(){
        Collection coll = new ArrayList();
        coll.add(123);
        coll.add(456);
        coll.add(new Person("jerry",20));
        coll.add(new String("Tom"));
        coll.add(false);
        Iterator iterator = coll.iterator();
        while (iterator.hasNext()){
            Object object = iterator.next();
            if ("Tom".equals(object)){
                iterator.remove();


            }


        }
        Iterator iterator1 = coll.iterator();
        while (iterator1.hasNext()){
            System.out.println(iterator1.next());

        }
    }
}

foreach

package com.atguigu.java8;
//JDK5.0 新增了foreach循环,用于遍历集合,数组

import org.junit.Test;

import java.util.ArrayList;
import java.util.Collection;

public class foreach {

    @Test
    public void test1() {
        Collection coll = new ArrayList();
        coll.add(123);
        coll.add(456);
        coll.add(new Person("jerry", 20));
        coll.add(new String("Tom"));
        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};

        //for(数组元素的类型,局部变量:数组对象)
        for (int i : arr) {

            System.out.println(i);

        }


    }

    //练习题
    @Test
    public void test3() {
        String[] arr = new String[]{"MM", "MM", "MM"};
        //方法1;普通for赋值
        for (int i = 0; i < arr.length; i++) {
            arr[i] = "GG";


        }
        //方式2;增强for循环
        for (String s : arr) {


            s = "G";

        }


        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);

        }
    }


}

数组和链表的区别
二者都属于bai一种数据结构
从逻辑结du构zhi来看

  1. 数组必须事先定义固dao定的长度(元素个数)zhuan,不能适shu应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。
  2. 链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项,非常繁琐)链表必须根据next指针找到下一个元素
    从内存存储来看
  3. (静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小
  4. 链表从堆中分配空间, 自由度大但是申请管理比较麻烦
    从上面的比较可以看出,如果需要快速访问数据,很少或不插入和删除元素,就应该用数组;相反, 如果需要经常插入和删除元素就需要用链表数据结构了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值