Java源码学习之集合系列一

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++) {}
    }
}

方法

Collection的UML图

size

该方法的返回值类型是 int ,也就是说集合中能放入的对象个数是 Integer.MAX_VALUE=2147483647 也就是2G(有人肯定会说谁会存这么多~~)作为技术人员我们需要知道这个方法的局限性有哪些这样使用的时候知根知底才能游刃有余

empty

是否还有同学使用 size() == 0 判断集合是否为空呢?可以考虑使用empty方法代替了,该方法更具有可读性以及更简洁的代码编写方式

总结

Collection是collection体系的 root interface 定义了整个体系的 行为 ,比如容器的基本行为:add(新增)、remove(删除)、size(集合大小)等等,然后在这个基础上搭建了许多差异性功能的容器比如:List(有列),Set(无列)等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值