]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.utils.datastructures/src/org/simantics/utils/datastructures/EssentiallyIterableCollection.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.utils.datastructures / src / org / simantics / utils / datastructures / EssentiallyIterableCollection.java
1 /*******************************************************************************
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management
3  * in Industry THTH ry.
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v1.0
6  * which accompanies this distribution, and is available at
7  * http://www.eclipse.org/legal/epl-v10.html
8  *
9  * Contributors:
10  *     VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.utils.datastructures;
13
14 import java.util.Collection;
15 import java.util.Iterator;
16
17
18 /**
19  * Immutable Collection adapter that uses iterator method to implement all 
20  * its methods. 
21  */
22 public abstract class EssentiallyIterableCollection<E> extends ImmutableCollection<E> {
23
24     @Override
25     public boolean contains(Object o) {
26         Iterator<E> iterator = iterator();
27         while(iterator.hasNext()) 
28             if(iterator.next().equals(o))
29                 return true;
30         return false;
31     }
32
33     @Override
34     public boolean containsAll(Collection<?> c) {
35         for(Object o : c)
36             if(!contains(o))
37                 return false;
38         return true;
39     }
40
41     @Override
42     public boolean isEmpty() {
43         return iterator().hasNext();
44     }
45
46     @Override
47     public int size() {
48         int count = 0;
49         Iterator<E> iterator = iterator();
50         while(iterator.hasNext()) {
51             ++ count;
52             iterator.next();
53         }
54         return count;
55     }
56
57 }