~ubuntu-branches/ubuntu/wily/gs-collections/wily

« back to all changes in this revision

Viewing changes to collections/src/main/java/com/gs/collections/impl/lazy/ChunkIterable.java

  • Committer: Package Import Robot
  • Author(s): Emmanuel Bourg
  • Date: 2015-07-23 12:42:30 UTC
  • Revision ID: package-import@ubuntu.com-20150723124230-2rjvfv6elyn2m7d4
Tags: upstream-5.1.0
ImportĀ upstreamĀ versionĀ 5.1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright 2011 Goldman Sachs.
 
3
 *
 
4
 * Licensed under the Apache License, Version 2.0 (the "License");
 
5
 * you may not use this file except in compliance with the License.
 
6
 * You may obtain a copy of the License at
 
7
 *
 
8
 *     http://www.apache.org/licenses/LICENSE-2.0
 
9
 *
 
10
 * Unless required by applicable law or agreed to in writing, software
 
11
 * distributed under the License is distributed on an "AS IS" BASIS,
 
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
13
 * See the License for the specific language governing permissions and
 
14
 * limitations under the License.
 
15
 */
 
16
 
 
17
package com.gs.collections.impl.lazy;
 
18
 
 
19
import java.util.Iterator;
 
20
 
 
21
import com.gs.collections.api.RichIterable;
 
22
import com.gs.collections.api.block.procedure.Procedure;
 
23
import com.gs.collections.api.block.procedure.Procedure2;
 
24
import com.gs.collections.api.block.procedure.primitive.ObjectIntProcedure;
 
25
import com.gs.collections.impl.lazy.iterator.ChunkIterator;
 
26
import com.gs.collections.impl.utility.internal.IterableIterate;
 
27
import net.jcip.annotations.Immutable;
 
28
 
 
29
/**
 
30
 * A ChunkIterable is an iterable that partitions a source iterable into fixed size chunks as it iterates.
 
31
 */
 
32
@Immutable
 
33
public class ChunkIterable<T>
 
34
        extends AbstractLazyIterable<RichIterable<T>>
 
35
{
 
36
    private final Iterable<T> iterable;
 
37
    private final int size;
 
38
 
 
39
    public ChunkIterable(Iterable<T> iterable, int size)
 
40
    {
 
41
        if (size <= 0)
 
42
        {
 
43
            throw new IllegalArgumentException("Size for groups must be positive but was: " + size);
 
44
        }
 
45
 
 
46
        this.iterable = iterable;
 
47
        this.size = size;
 
48
    }
 
49
 
 
50
    public Iterator<RichIterable<T>> iterator()
 
51
    {
 
52
        return new ChunkIterator<T>(this.iterable, this.size);
 
53
    }
 
54
 
 
55
    public void forEach(Procedure<? super RichIterable<T>> procedure)
 
56
    {
 
57
        IterableIterate.forEach(this, procedure);
 
58
    }
 
59
 
 
60
    public void forEachWithIndex(ObjectIntProcedure<? super RichIterable<T>> objectIntProcedure)
 
61
    {
 
62
        IterableIterate.forEachWithIndex(this, objectIntProcedure);
 
63
    }
 
64
 
 
65
    public <P> void forEachWith(Procedure2<? super RichIterable<T>, ? super P> procedure, P parameter)
 
66
    {
 
67
        IterableIterate.forEachWith(this, procedure, parameter);
 
68
    }
 
69
}