Java集合类源码解析

 

 

在 Java 类库中,集合类的基本接口是 Collection 接口。这个接口有两个基本方法:

boolean add(E element);
Iterator<E> iterator();


Iterator  接口包含 4 个方法:

如果实现 Collection 接口的每一个类都要提供如此多的例行方法将是一件很烦人的
事情。为了能够让实现者更容易地实现这个接口。Java 类库提供了一个类 AbstractedCollection,
它将基础方法 size 和 iterator 抽象化了

 

 1.链表

链表涉及到的实现类有:

LinkedList 
   AbstractSequentialList  内部有listIterator的内部
      AbstractList 
         AbstractCollection

listIterator()新建一个从0开始的迭代器。多个迭代器同时修改一个List会发生并发问题。抛出Concurrent ModificationException 异常。原理:每个迭代器都维护一个独立的计数值。在每个迭代器方法的开始处检查自己改写操作的计数值是否与集合的改写操作计数值一致。如果不一致, 抛出一个 Concurrent
ModificationException 异常。

 

使用get(idnex);方法访问某个特定元素是一次遍历的过程。

 

    public E get(int index) {
        checkElementIndex(index);
        return node(index).item;
    }
    Node<E> node(int index) {
        // assert isElementIndex(index);

        if (index < (size >> 1)) {
            Node<E> x = first;
            for (int i = 0; i < index; i++)
                x = x.next;
            return x;
        } else {
            Node<E> x = last;
            for (int i = size - 1; i > index; i--)
                x = x.prev;
            return x;
        }
    }

2.数组

 

3.散列表

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值