Collectionインタフェースの説明

8755 ワード

Collectionインタフェースの説明
  • Collectionは、集合システム内のルートインタフェースであるオブジェクトのセットを表します.重複を許可する要素の中には許可されていないものもあれば、順序がないものもあります.JDKは、このインタフェースの特定のクラスの直接的な実装を提供せず、リストやSetなどのサブインタフェースと抽象クラスの実装のみがあり、このインタフェースは、通常、集合を伝達し、最大の汎用性を必要とする場合に使用される(インタフェースをパラメータとする場合など).
  • このインタフェースのすべてのインプリメンテーションクラスは、無パラメトリックコンストラクタとCollectionとパラメータのパラメトリックコンストラクタを提供するべきである.これは文法的に強制的に規定されているのではなくjava規範が規定されているため、インタフェースにコンストラクタが含まれていない.
  • このインタフェースインプリメンテーションクラスは、メソッドがサポートされていない場合は、U n s p p p p o r t e d OperationExceptionを捨てることができます.
  • 実装クラスによっては、nullの追加が許可されていないものや、要素タイプに制限があるものなど、含まれる要素に異なる制限がある場合があります.条件に合わない要素を追加しようとすると、Null PointerExceptionまたはClassCastExceptionが放出され、条件に合わない要素をクエリーしようとすると、異なる実装に応じて例外が放出されたりfalseが返されたりする可能性があります.
  • 同期ポリシーは、各実装クラスによって独自に決定される.

  • クエリー操作:
    /**
         *           ,        Integer.MAX_VALUE,   Integer.MAX_VALUE
         */
        int size();
        /**
         *            
         */
        boolean isEmpty();
        /**
         *              
         */
        boolean contains(Object o);
        /**
         *        ,            ,               
         */
        Iterator iterator();
        /**
         *         ,                       
        *               
         */
        Object[] toArray();
        /**
         *              。                   ,         
         *             。
         *      ,                 
         *            ,                  null
         *                       ,   ArrayStoreException  
         *        ,   NullPointerException
         */
         T[] toArray(T[] a);

     
    変更操作:
    /**
         *               。              true。                        ,    false
         *                        。   ,       null  ,                。
         * Collection                  。
         *                            ,       ,(     false)。                          。
         */
        boolean add(E e);
    
        /**
         *           ,      ;               ,     (o==null?e==null:o.equals(e))   ;
         *                 ,   true;                ,  ClassCastException  (       );
         *        null         null    ,    NullPointerException  (       )
         *         remove      UnsupportedOperationException  (       )
         */
        boolean remove(Object o);

     
    一括アクション:
    /**
         *   this             ,  true
         *             this     ,  ClassCastException  (       )
         *               null  this     null    ,    NullPointerException  (       )
         */
        boolean containsAll(Collection> c);
    
        /**
         *            this   (     )。                  ,          。
         * (                ,          ,              。)          this    true   
         * addAll         ,    UnsupportedOpertaionException  
         *              this         ,    NullPointerException  
         *   this    hiding        ,    ClassCastException  
         *                         ,   IllegalArgumentException
         *       ,                ,   IllegalStateException  
         */
        boolean addAll(Collection extends E> c);
    
        /**
         *                     (     )。        ,                   。                true
         *         removeAll  ,   UnsupportedOperationException
         *                        ,   ClassCastException(     )
         *                ,            (optional),         ,   NullPointerException  
         */
        boolean removeAll(Collection> c);
    
        /**
         *             Predicate   。       Predicate                   
         *                    。          iterator.remove()   。
         *      iterator         UnsupportedOperationException  
         *        ,  NullPointerException          ,  UnsupportedOperationException  
         */
        default boolean removeIf(Predicate super E> filter) {
            Objects.requireNonNull(filter);
            boolean removed = false;
            final Iterator each = iterator();
            while (each.hasNext()) {
                if (filter.test(each.next())) {
                    each.remove();
                    removed = true;
                }
            }
            return removed;
        }
    
        /**
         *                   (     )     ,                    。           true
         *         retainAll,   UnsupportedOperationException  
         *                        ,   ClassCastException(     )
         *                ,            ,         ,  NullPointerException(     )
         */
        boolean retainAll(Collection> c);
    
        /**
         *            ,      ,             clear         UnsupportOperationException  。
         */
        void clear();

     
    比較とhash:
        boolean equals(Object o);
    
        int hashCode();

     
    デフォルトの方法:
    /**
         *     ,        ,      
         */
        default Spliterator spliterator() {
            return Spliterators.spliterator(this, 0);
        }
    
        default Stream stream() {
            return StreamSupport.stream(spliterator(), false);
        }
    
        default Stream parallelStream() {
            return StreamSupport.stream(spliterator(), true);
        }

    参照先:https://www.jianshu.com/p/ef2990140d05