JDK 源码解读之 Set接口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK 源码解读之 Set接口相关的知识,希望对你有一定的参考价值。

public interface Set<E> extends Collection<E> {    //Set很简单,扩展了Collection

  Set<E> 和 Collection<E> 都带了<E>,是泛型接口。什么是泛型类,泛型接口呢?Oracle官方文档上是这么说的:

  A generic class is defined with the following format:

    class name<T1, T2, ..., Tn> { /* ... */ }

  The type parameter section, delimited by angle brackets (<>), follows the class name. It specifies the type parameters (also called type variablesT1T2, ..., and Tn.

  泛型类形式上就是 类名<泛型类型>。

  A generic type is a generic class or interface that is parameterized over types.

 

  接下来,让我们再看另一个方法:

Iterator<E> iterator();

  iterator方法,返回的是一个Iterator<E>,也是一个泛型接口。

    <T> T[] toArray(T[] a);

  <T> 是一个generic Type,比如Integer、String,toArray() 的参数和返回值,都是T类型的数组。

接下来,我们再看另外两个方法:

  

    boolean addAll(Collection<? extends E> c);

    boolean retainAll(Collection<?> c);

<? extends E> 和 <?> 有什么不同呢?

  ?是一个通配符,代表unknown Type。

  <?> 代表 unbounded wildcard 。<? extends E> 代表upper bounded wildcards。

  List<Object> 与 List<?> 是相同的吗?

 

 default Spliterator<E> spliterator() {

这个方法,涉及到了java8的Stream API,等以后再说吧,现在超出我的范围了。。。。。

 

以上是关于JDK 源码解读之 Set接口的主要内容,如果未能解决你的问题,请参考以下文章

JDK源码解读之Integer

JDK 源码解读之 ArrayList

JDK 源码解读之 Number类

JDK1.8 FutureTask源码解读(Future模式)

RPC框架之Thrift架构及源码解读

RPC框架之Thrift架构及源码解读