jdk源码阅读Collection详解

简介: jdk源码阅读Collection详解

这篇文章主要介绍了jdk源码阅读Collection详解,具有一定借鉴价值,需要的朋友可以参考下

见过一句夸张的话,叫做“没有阅读过jdk源码的人不算学过java”。从今天起开始精读源码。而适合精读的源码无非就是java.io,.util和.lang包下的类。

面试题中对于集合的考察还是比较多的,所以我就先从集合的源码开始看起。

(一)首先是Collection接口。

Collection是所有collection类的根接口;Collection继承了Iterable,即所有的Collection中的类都能使用foreach方法。

/** 
 * Collection是所有collection类的根接口;
 * Collection继承了Iterable,即所有的Collection中的类都能使用foreach方法。
 * @author WGS 
 * @param <E> 
 */
public interface Collection<E> extends Iterable<E> {
    //返回集合中元素的大小。(如果此大小值超过Integer.MAX_VALUE,就直接返回Integer.MAX_VALUE) 
    int size();
    //判断集合是否为空 
    Boolean isEmpty();
    //判断集合是否包含元素o(注意元素e是否为null及类型是否兼容问题) 
    Boolean contains(Object o);
    //返回集合中元素的迭代器(顺序不能保证,除非集合指定了顺序) 
    Iterator<E> iterator();
    //以数组的形式返回集合中的所有元素,数组是安全 
    Object[] toArray();
    //以数组形式返回指定数组类型的集合元素 
    <T> T[] toArray(T[] a);
    //此方法可用来判断集合中是否含有元素e;是-false,否-true(在set,map中会经常调用这个方法,在编程题时很有用) 
    Boolean add(E e);
    //从集合中移除指定的元素 
    Boolean remove(Object o);
    //用来判断是否含有指定集合中的所以元素 
    Boolean containsAll(Collection<?> c);
    //将指定集合中的所有元素添加至调用者的集合中 
    Boolean addAll(Collection<? extends E> c);
    //移除与指定集合相同的元素(即移除两集合交集部分) 
    Boolean removeAll(Collection<?> c);
    //保留与指定集合中相同的元素(即移除与指定集合不同的元素) 
    Boolean retainAll(Collection<?> c);
    //清空集合 
    void clear();
    //判断与指定元素是否相等 
    Boolean equals(Object o);
    //返回集合的哈希码值 
    int hashCode();
}

总结

以上就是本文关于jdk源码阅读Collection详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对"java开发全栈"的支持!

相关文章
|
5月前
|
安全 前端开发 Java
JDK源码级别彻底剖析JVM类加载机制
JDK源码级别彻底剖析JVM类加载机制
|
5月前
|
缓存 Dubbo Java
趁同事上厕所的时间,看完了 Dubbo SPI 的源码,瞬间觉得 JDK SPI 不香了
趁同事上厕所的时间,看完了 Dubbo SPI 的源码,瞬间觉得 JDK SPI 不香了
|
2月前
|
算法 安全 Java
深入JDK源码:揭开ConcurrentHashMap底层结构的神秘面纱
【8月更文挑战第24天】`ConcurrentHashMap`是Java并发编程中不可或缺的线程安全哈希表实现。它通过精巧的锁机制和无锁算法显著提升了并发性能。本文首先介绍了早期版本中使用的“段”结构,每个段是一个带有独立锁的小型哈希表,能够减少线程间竞争并支持动态扩容以应对高并发场景。随后探讨了JDK 8的重大改进:取消段的概念,采用更细粒度的锁控制,并引入`Node`等内部类以及CAS操作,有效解决了哈希冲突并实现了高性能的并发访问。这些设计使得`ConcurrentHashMap`成为构建高效多线程应用的强大工具。
48 2
|
4月前
|
Java Spring
深入解析Spring源码,揭示JDK动态代理的工作原理。
深入解析Spring源码,揭示JDK动态代理的工作原理。
54 0
|
5月前
|
设计模式 Java
根据JDK源码Calendar来看工厂模式和建造者模式
根据JDK源码Calendar来看工厂模式和建造者模式
|
5月前
|
算法 Java 索引
【数据结构与算法】4、双向链表(学习 jdk 的 LinkedList 部分源码)
【数据结构与算法】4、双向链表(学习 jdk 的 LinkedList 部分源码)
64 0
|
5月前
|
Java Linux iOS开发
Spring5源码(27)-静态代理模式和JDK、CGLIB动态代理
Spring5源码(27)-静态代理模式和JDK、CGLIB动态代理
44 0
|
5月前
|
消息中间件 Oracle Dubbo
Netty 源码共读(一)如何阅读JDK下sun包的源码
Netty 源码共读(一)如何阅读JDK下sun包的源码
121 1
|
5月前
|
算法 安全 Java
ConcurrentLinkedQueue的源码解析(基于JDK1.8)
ConcurrentLinkedQueue的源码解析(基于JDK1.8) ConcurrentLinkedQueue是Java集合框架中的一种线程安全的队列,它是通过CAS(Compare and Swap)算法实现的并发队列。在并发场景下,ConcurrentLinkedQueue能够保证队列的线程安全性,同时性能也很不错。
|
5月前
|
Java
LinkedBlockingDeque的源码解析(基于JDK1.8)
LinkedBlockingDeque的源码解析(基于JDK1.8) LinkedBlockingDeque是Java中的一个阻塞双端队列,它继承自AbstractQueue类并实现了BlockingDeque接口。在多线程环境下,LinkedBlockingDeque能够提供高效的并发访问能力。下面我们来看一下它的源码实现。