《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》查找相关笔记
评论🌹点赞👍收藏✨关注👀,是送给作者最好的礼物,愿我们共同学习,一起进步
如果对作者发布的内容感兴趣,可点击下方关注公众号 钰娘娘知识汇总 查看更多作者文章哦!