KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > polyglot > util > CollectionUtil


1 package polyglot.util;
2
3 import java.util.*;
4
5 /** Collection utilities. */
6 public class CollectionUtil
7 {
8     /** Return a new list with <code>o</code> appended to <code>l</code>. */
9     public static List add(List l, Object JavaDoc o) {
10         l.add(o);
11         return l;
12     }
13
14     /**
15      * Return true if <code>a</code> and <code>b</code> are
16      * pointer equal, or if iterators over both return the same
17      * sequence of pointer equal elements.
18      */

19     public static boolean equals(Collection a, Collection b) {
20         if (a == b) {
21             return true;
22         }
23         
24         // the case where both are null is handled in the previous if.
25
if (a == null ^ b == null) {
26             return false;
27         }
28         
29         Iterator i = a.iterator();
30         Iterator j = b.iterator();
31
32         while (i.hasNext() && j.hasNext()) {
33             Object JavaDoc o = i.next();
34             Object JavaDoc p = j.next();
35
36             if (o != p) {
37                 return false;
38             }
39         }
40
41         if (i.hasNext() || j.hasNext()) {
42             return false;
43         }
44
45         return true;
46     }
47
48     /** Return a singleton list containing <code>o</code>. */
49     public static List list(Object JavaDoc o) {
50         return Collections.singletonList(o);
51     }
52
53     /** Return a list containing <code>o1</code> and <code>o2</code>. */
54     public static List list(Object JavaDoc o1, Object JavaDoc o2) {
55         List l = new ArrayList(2);
56         l.add(o1);
57         l.add(o2);
58         return l;
59     }
60
61     /** Return a list containing <code>o1</code>, ..., <code>o3</code>. */
62     public static List list(Object JavaDoc o1, Object JavaDoc o2, Object JavaDoc o3) {
63         List l = new ArrayList(3);
64         l.add(o1);
65         l.add(o2);
66         l.add(o3);
67         return l;
68     }
69
70     /** Return a list containing <code>o1</code>, ..., <code>o4</code>. */
71     public static List list(Object JavaDoc o1, Object JavaDoc o2, Object JavaDoc o3, Object JavaDoc o4) {
72         List l = new ArrayList(3);
73         l.add(o1);
74         l.add(o2);
75         l.add(o3);
76         l.add(o4);
77         return l;
78     }
79
80         public static Object JavaDoc firstOrElse(Collection l, Object JavaDoc alt) {
81                 Iterator i = l.iterator();
82                 if (i.hasNext()) return i.next();
83                 return alt;
84         }
85
86
87         public static Iterator pairs(Collection l) {
88                 List x = new LinkedList();
89                 Object JavaDoc prev = null;
90                 for (Iterator i = l.iterator(); i.hasNext(); ) {
91                     Object JavaDoc curr = i.next();
92                     if (prev != null) x.add(new Object JavaDoc[] { prev, curr });
93                     prev = curr;
94                 }
95                 return x.iterator();
96         }
97
98     /**
99      * Apply <code>t</code> to each element of <code>l</code>.
100      * <code>l</code> is not modified.
101      * @return A list containing the result of each transformation,
102      * in the same order as the original elements.
103      */

104     public static List map(List l, Transformation t) {
105         List m = new ArrayList(l.size());
106         for (Iterator i = new TransformingIterator(l.iterator(), t);
107             i.hasNext(); )
108         {
109             m.add(i.next());
110         }
111         return m;
112     }
113
114 }
115
Popular Tags