Collection
本系列的Java源码版本是官网最新版java 11
我们从类的集成结构可以看到Collection实现了 Iterable
接口
Implementing this interface allows an object to be the target of the enhanced {@code for} statement (sometimes called the “for-each loop” statement).
实现该接口的类可以使用 for (arr : arrs)
这种方式进行遍历集合的元素
package com.jaksona;
import java.util.Iterator;
import java.util.Random;
public class MyIterable implements Iterable<String> {
@Override
public Iterator<String> iterator() {
return new MyIterator();
}
class MyIterator implements Iterator<String> {
int cursor = 0;
@Override
public boolean hasNext() {
return cursor < 10;
}
@Override
public String next() {
long random = new Random().nextLong();
cursor += 1;
return random + "";
}
}
}
实现一个最简单的 Iterable
接口, 获取随机的元素值
package com.jaksona;
public class Main {
public static void main(String[] args) {
// write your code here
MyIterable myIterable = new MyIterable();
// 只能通过for-each方式访问
for (String s : myIterable) {
System.out.println(s);
}
// 无法通过for-i方式, 需要实现size方法
// for (int i = 0; i < myIterable.size(); i++) {}
}
}
方法
size
该方法的返回值类型是 int
,也就是说集合中能放入的对象个数是 Integer.MAX_VALUE=2147483647
也就是2G(有人肯定会说谁会存这么多~~)作为技术人员我们需要知道这个方法的局限性有哪些这样使用的时候知根知底才能游刃有余
empty
是否还有同学使用 size() == 0
判断集合是否为空呢?可以考虑使用empty方法代替了,该方法更具有可读性以及更简洁的代码编写方式
总结
Collection是collection体系的 root interface
定义了整个体系的 行为 ,比如容器的基本行为:add(新增)、remove(删除)、size(集合大小)等等,然后在这个基础上搭建了许多差异性功能的容器比如:List(有列),Set(无列)等等。