集合与迭代器

集合

在编程时,可以使用数组来保存多个对象,但数组长度不可变化,一旦在初始化数组时指定了数组长度,这个数组长度就是不可变的。如果需要保存数量变化的数据,数组就有点无能为力了。而且数组无法保存具有映射关系的数据,为了保存数量不确定的数据,以及保存具有映射关系的数据,java 提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。

集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象,而集合里只能保存对象。

Java 集合类型分为 Collection 和 Map,它们是 Java 集合的根接口,这两个接口又包含了一些子接口或实现类。

Collection接口基本结构

  Map接口基本结构

 

Collection 常用功能

 代码案例:

public static void main(String[] args) {
        ArrayList<Object> objects = new ArrayList<>();
        objects.add("123456");
        objects.add(652);
        objects.add(true);
        objects.remove("123456");
        boolean contains = objects.contains("123456");
        System.out.println(contains);
        System.out.println(objects);
        for (Object next : objects) {
            System.out.println(next);
        }

迭代器

在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口迭代是Collection集合元素遍历的一种方式。在取元素之前先判断集合中是否有元素,如果有,就把这个元素取出来。继续判断,如果有继续获取元素,直到集合中所有元素全部取出。这种取出方式专业术语称为迭代

boolean hasNext():判断是否有下一个元素
E next():返回下一个元素
void remove():删除下一个元素

获取迭代器

Iterator iter = 集合.iterator();

注意:

Iterable:可以迭代,表示一种可迭代的能力(提供了获取迭代器的方法)

Iterator:迭代器具体实现迭代功能(真正的迭代器)

使用迭代器

1.获取迭代器: iterator

2.判断是否存在下一个元素: hasNext

3.如果存在获取下一个元素: next

4.重复2,3步骤直到没有下一个元素

代码案例:

 public static void main(String[] args) {
        ArrayList arrayList = new ArrayList();
        arrayList.add(56341);
        arrayList.add(87465);
        arrayList.add(94864);
        Iterator iterator = arrayList.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }

注意:

1.在进行集合元素获取时,如果集合中已经没有元素了,还继续使用迭代器的next方法,将会抛出java.util.NoSuchElementException没有集合元素异常。

2.在进行集合元素获取时,如果添加或移除集合中的元素 , 将无法继续迭代 , 将会抛出ConcurrentModificationException并发修改异常.

增强for循环【foreach】

增强for循环(也称for each循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。

语法格式:

for(变量类型 变量 :数组/集合){
    处理遍历的数据,数据就保存在这个变量上面
}

小技巧:数组名/集合名.for

代码案例:

public static void main(String[] args) {
        ArrayList arrayList = new ArrayList();
        arrayList.add(56341);
        arrayList.add(87465);
        arrayList.add(94864);
        for (Object o : arrayList) {
            System.out.println(o);
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值