1 package polyglot.util; 2 3 import java.util.*; 4 5 6 public class CollectionUtil 7 { 8 9 public static List add(List l, Object o) { 10 l.add(o); 11 return l; 12 } 13 14 19 public static boolean equals(Collection a, Collection b) { 20 if (a == b) { 21 return true; 22 } 23 24 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 o = i.next(); 34 Object 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 49 public static List list(Object o) { 50 return Collections.singletonList(o); 51 } 52 53 54 public static List list(Object o1, Object o2) { 55 List l = new ArrayList(2); 56 l.add(o1); 57 l.add(o2); 58 return l; 59 } 60 61 62 public static List list(Object o1, Object o2, Object 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 71 public static List list(Object o1, Object o2, Object o3, Object 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 firstOrElse(Collection l, Object 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 prev = null; 90 for (Iterator i = l.iterator(); i.hasNext(); ) { 91 Object curr = i.next(); 92 if (prev != null) x.add(new Object [] { prev, curr }); 93 prev = curr; 94 } 95 return x.iterator(); 96 } 97 98 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 |