This project has retired. For details please refer to its Attic page.
WCollection xref
View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  package org.apache.giraph.types.ops.collections;
19  
20  import java.io.DataInput;
21  import java.io.DataOutput;
22  import java.io.IOException;
23  
24  import org.apache.giraph.function.Consumer;
25  import org.apache.giraph.function.Predicate;
26  import org.apache.giraph.types.ops.PrimitiveTypeOps;
27  import org.apache.hadoop.io.Writable;
28  
29  /**
30   * Collection over mutable elements, which are probably
31   * internally stored differently/efficiently, and are accessed
32   * through methods providing "return" value.
33   *
34   * @param <T> Element type
35   */
36  public interface WCollection<T> extends Writable {
37    /** Removes all of the elements from this  */
38    void clear();
39    /**
40     * Number of elements in this list
41     * @return size
42     */
43    int size();
44    /**
45     * Capacity of currently allocated memory
46     * @return capacity
47     */
48    int capacity();
49    /**
50     * Forces allocated memory to hold exactly N values
51     * @param n new capacity
52     */
53    void setCapacity(int n);
54    /**
55     * Add value to the collection
56     * @param value Value
57     */
58    void addW(T value);
59    /**
60     * TypeOps for type of elements this object holds
61     * @return TypeOps
62     */
63    PrimitiveTypeOps<T> getElementTypeOps();
64    /**
65     * Fast iterator over collection objects, which doesn't allocate new
66     * element for each returned element, and can be iterated multiple times
67     * using reset().
68     *
69     * Object returned by next() is only valid until next() is called again,
70     * because it is reused.
71     *
72     * @return RessettableIterator
73     */
74    ResettableIterator<T> fastIteratorW();
75    /**
76     * Fast iterator over collection objects, which doesn't allocate new
77     * element for each returned element, and can be iterated multiple times
78     * using reset().
79     *
80     * Each call to next() populates passed value.
81     *
82     * @param iterationValue Value that call to next() will populate
83     * @return RessettableIterator
84     */
85    ResettableIterator<T> fastIteratorW(T iterationValue);
86    /**
87     * Traverse all elements of the collection, calling given function on each
88     * element. Passed values are valid only during the call to the passed
89     * function, so data needs to be consumed during the function.
90     *
91     * @param f Function to call on each element.
92     */
93    void fastForEachW(Consumer<T> f);
94    /**
95     * Traverse all elements of the collection, calling given function on each
96     * element, or until predicate returns false.
97     * Passed values are valid only during the call to the passed
98     * function, so data needs to be consumed during the function.
99     *
100    * @param f Function to call on each element.
101    * @return true if the predicate returned true for all elements,
102    *    false if it returned false for some element.
103    */
104   boolean fastForEachWhileW(Predicate<T> f);
105   /**
106    * Write elements to the DataOutput stream, without the size itself.
107    * Can be read back using readElements function.
108    *
109    * @param out Data output
110    */
111   void writeElements(DataOutput out) throws IOException;
112   /**
113    * Read elements from DataInput stream, with passing the size instead
114    * reading it from the stream.
115    *
116    * @param in Data Input
117    * @param size Number of elements
118    */
119   void readElements(DataInput in, int size) throws IOException;
120 }