> 文档中心 > 《Java 核心技术 卷1》 笔记 第13章 集合(2)集合接口和常用方法介绍

《Java 核心技术 卷1》 笔记 第13章 集合(2)集合接口和常用方法介绍


 12.1.2 Java 类库中的集合接口和迭代器接口

 集合的添加与遍历

add() 添加元素, 加的了就 true, 不了就 false

iterator() 遍历元素(循环查看元素)

Iterator() 返回迭代器对象 Iterator, 那么这个迭代器要怎么用?我们看看源码:

其中最后一个是 jdk 1.8 才开始支持的

❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤

public class Main {    public static void main(String[] args) { Main main = new Main();   List list = new ArrayList(); for(int i = 0; i < 10; i++){     list.add(i+1); }   Iterator it = list.iterator(); while (it.hasNext()){     Integer v = (Integer) it.next();if(v%2==0)  it.remove();     else  System.out.println(v); }   it = list.iterator(); while (it.hasNext()){     Integer v = (Integer) it.next();     System.out.println(v);     break; }   it.forEachRemaining(System.out::println);   System.out.println(list);    }}

❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤

运行结果:

🚗🚓🚕🛺🚙🚌🚐🚎🚑🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍

🚗🚓🚕🛺🚙🚌🚐🚎🚑🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍

foreach 遍历的实现,实现 Iterable 接口,大致内部方法如下:

❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤

import java.util.*; public class Main {    public static void main(String[] args) { Main main = new Main();  MyArrayList list = new MyArrayList(new Integer[]{1,2,3}); for(int item:list){     System.out.println(item); }  list.forEach(System.out::println);    }} class MyArrayList implements Iterable{    E[] items;    int size = 0;    public MyArrayList(E[] items){ this.items = items; size = items.length;    }     @Override    public Iterator iterator() { return new MyIterator();    }     class MyIterator implements Iterator{ int index = 0;  @Override public boolean hasNext() {     return index<size; }  @Override public E next() {     return (E) items[index++]; }    }}

❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤

运行结果:

🚗🚓🚕🛺🚙🚌🚐🚎🚑🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍

🚗🚓🚕🛺🚙🚌🚐🚎🚑🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍

 删除元素

it.remove() 迭代器删除

补充细节:同一个元素不能连续删除两次。这很好理解,比如把完好的镜子摔碎,不能进行两次。因为摔碎的镜子已经不符合完好的条件了。

把第一段代码加一个 remove:

运行结果(编译通过,运行出错):

🚗🚓🚕🛺🚙🚌🚐🚎🚑🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍

🚗🚓🚕🛺🚙🚌🚐🚎🚑🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍

 其他功能

看Collection 源码即可,大致常用功能介绍如下:

总结:

Iterator 是迭代器,可用于遍历元素、移除元素等,注意移除不能连续移除,需与当前元素位置相对应,同一元素只能移除一次

Iterable 是集合实现 forEach 所必须实现的接口

size()/add()/remove()用途了解即可

 相关内容:选择 《Java核心技术 卷1》查找相关笔记

评论🌹点赞👍收藏✨关注👀,是送给作者最好的礼物,愿我们共同学习,一起进步

如果对作者发布的内容感兴趣,可点击下方关注公众号 钰娘娘知识汇总 查看更多作者文章哦!

一家人vip视频