scolebourne 2002/12/13 04:01:58
Modified: collections/src/java/org/apache/commons/collections
IteratorUtils.java
Log:
Rework array iterators to include Iterator and ListIterator implementations.
Also add Object array versions for better performance.
Revision Changes Path
1.7 +157 -47
jakarta-commons/collections/src/java/org/apache/commons/collections/IteratorUtils.java
Index: IteratorUtils.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/IteratorUtils.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- IteratorUtils.java 8 Dec 2002 15:42:35 -0000 1.6
+++ IteratorUtils.java 13 Dec 2002 12:01:58 -0000 1.7
@@ -75,6 +75,7 @@
import java.util.NoSuchElementException;
import org.apache.commons.collections.iterators.ArrayIterator;
+import org.apache.commons.collections.iterators.ArrayListIterator;
import org.apache.commons.collections.iterators.CollatingIterator;
import org.apache.commons.collections.iterators.EnumerationIterator;
import org.apache.commons.collections.iterators.FilterIterator;
@@ -83,6 +84,8 @@
import org.apache.commons.collections.iterators.IteratorEnumeration;
import org.apache.commons.collections.iterators.ListIteratorWrapper;
import org.apache.commons.collections.iterators.LoopingIterator;
+import org.apache.commons.collections.iterators.ObjectArrayIterator;
+import org.apache.commons.collections.iterators.ObjectArrayListIterator;
import org.apache.commons.collections.iterators.SingletonIterator;
import org.apache.commons.collections.iterators.SingletonListIterator;
import org.apache.commons.collections.iterators.TransformIterator;
@@ -167,81 +170,188 @@
return new SingletonListIterator(object);
}
+ // Arrays
+ //----------------------------------------------------------------------
+
/**
- * Gets an iterator over an array.
+ * Gets an iterator over an object array.
*
* @param array the array over which to iterate
* @return an iterator over the array
* @throws NullPointerException if array is null
*/
public static Iterator arrayIterator(Object[] array) {
+ return new ObjectArrayIterator(array);
+ }
+
+ /**
+ * Gets an iterator over an object or primitive array.
+ * <p>
+ * This method will handle primitive arrays as well as object arrays.
+ * The primitives will be wrapped in the appropriate wrapper class.
+ *
+ * @param array the array over which to iterate
+ * @return an iterator over the array
+ * @throws IllegalArgumentException if the array is not an array
+ * @throws NullPointerException if array is null
+ */
+ public static Iterator arrayIterator(Object array) {
return new ArrayIterator(array);
}
/**
- * Gets an iterator over the end part of an array.
+ * Gets an iterator over the end part of an object array.
*
* @param array the array over which to iterate
* @param start the index to start iterating at
* @return an iterator over part of the array
- * @throws IllegalArgumentException if array bounds are invalid
+ * @throws IndexOutOfBoundsException if start is less than zero
* @throws NullPointerException if array is null
*/
public static Iterator arrayIterator(Object[] array, int start) {
+ return new ObjectArrayIterator(array, start);
+ }
+
+ /**
+ * Gets an iterator over the end part of an object or primitive array.
+ * <p>
+ * This method will handle primitive arrays as well as object arrays.
+ * The primitives will be wrapped in the appropriate wrapper class.
+ *
+ * @param array the array over which to iterate
+ * @param start the index to start iterating at
+ * @return an iterator over part of the array
+ * @throws IllegalArgumentException if the array is not an array
+ * @throws IndexOutOfBoundsException if start is less than zero
+ * @throws NullPointerException if array is null
+ */
+ public static Iterator arrayIterator(Object array, int start) {
return new ArrayIterator(array, start);
}
/**
- * Gets an iterator over part of an array.
+ * Gets an iterator over part of an object array.
*
* @param array the array over which to iterate
* @param start the index to start iterating at
* @param end the index to finish iterating at
* @return an iterator over part of the array
- * @throws IllegalArgumentException if array bounds are invalid
+ * @throws IndexOutOfBoundsException if array bounds are invalid
+ * @throws IllegalArgumentException if end is before start
* @throws NullPointerException if array is null
*/
public static Iterator arrayIterator(Object[] array, int start, int end) {
+ return new ObjectArrayIterator(array, start, end);
+ }
+
+ /**
+ * Gets an iterator over part of an object or primitive array.
+ * <p>
+ * This method will handle primitive arrays as well as object arrays.
+ * The primitives will be wrapped in the appropriate wrapper class.
+ *
+ * @param array the array over which to iterate
+ * @param start the index to start iterating at
+ * @param end the index to finish iterating at
+ * @return an iterator over part of the array
+ * @throws IllegalArgumentException if the array is not an array
+ * @throws IndexOutOfBoundsException if array bounds are invalid
+ * @throws IllegalArgumentException if end is before start
+ * @throws NullPointerException if array is null
+ */
+ public static Iterator arrayIterator(Object array, int start, int end) {
return new ArrayIterator(array, start, end);
}
-// /**
-// * Gets a list iterator over an array.
-// *
-// * @param array the array over which to iterate
-// * @return a list iterator over the array
-// * @throws NullPointerException if array is null
-// */
-// public static ListIterator arrayListIterator(Object[] array) {
-// return new ArrayListIterator(array);
-// }
-//
-// /**
-// * Gets a list iterator over the end part of an array.
-// *
-// * @param array the array over which to iterate
-// * @param start the index to start iterating at
-// * @return a list iterator over part of the array
-// * @throws IllegalArgumentException if array bounds are invalid
-// * @throws NullPointerException if array is null
-// */
-// public static ListIterator arrayListIterator(Object[] array, int start) {
-// return new ArrayListIterator(array, start);
-// }
-//
-// /**
-// * Gets a list iterator over part of an array.
-// *
-// * @param array the array over which to iterate
-// * @param start the index to start iterating at
-// * @param end the index to finish iterating at
-// * @return a list iterator over part of the array
-// * @throws IllegalArgumentException if array bounds are invalid
-// * @throws NullPointerException if array is null
-// */
-// public static ListIterator arrayListIterator(Object[] array, int start, int
end) {
-// return new ArrayListIterator(array, start, end);
-// }
+ /**
+ * Gets a list iterator over an object array.
+ *
+ * @param array the array over which to iterate
+ * @return a list iterator over the array
+ * @throws NullPointerException if array is null
+ */
+ public static ListIterator arrayListIterator(Object[] array) {
+ return new ObjectArrayListIterator(array);
+ }
+
+ /**
+ * Gets a list iterator over an object or primitive array.
+ * <p>
+ * This method will handle primitive arrays as well as object arrays.
+ * The primitives will be wrapped in the appropriate wrapper class.
+ *
+ * @param array the array over which to iterate
+ * @return a list iterator over the array
+ * @throws IllegalArgumentException if the array is not an array
+ * @throws NullPointerException if array is null
+ */
+ public static ListIterator arrayListIterator(Object array) {
+ return new ArrayListIterator(array);
+ }
+
+ /**
+ * Gets a list iterator over the end part of an object array.
+ *
+ * @param array the array over which to iterate
+ * @param start the index to start iterating at
+ * @return a list iterator over part of the array
+ * @throws IndexOutOfBoundsException if start is less than zero
+ * @throws NullPointerException if array is null
+ */
+ public static ListIterator arrayListIterator(Object[] array, int start) {
+ return new ObjectArrayListIterator(array, start);
+ }
+
+ /**
+ * Gets a list iterator over the end part of an object or primitive array.
+ * <p>
+ * This method will handle primitive arrays as well as object arrays.
+ * The primitives will be wrapped in the appropriate wrapper class.
+ *
+ * @param array the array over which to iterate
+ * @param start the index to start iterating at
+ * @return a list iterator over part of the array
+ * @throws IllegalArgumentException if the array is not an array
+ * @throws IndexOutOfBoundsException if start is less than zero
+ * @throws NullPointerException if array is null
+ */
+ public static ListIterator arrayListIterator(Object array, int start) {
+ return new ArrayListIterator(array, start);
+ }
+
+ /**
+ * Gets a list iterator over part of an object array.
+ *
+ * @param array the array over which to iterate
+ * @param start the index to start iterating at
+ * @param end the index to finish iterating at
+ * @return a list iterator over part of the array
+ * @throws IndexOutOfBoundsException if array bounds are invalid
+ * @throws IllegalArgumentException if end is before start
+ * @throws NullPointerException if array is null
+ */
+ public static ListIterator arrayListIterator(Object[] array, int start, int
end) {
+ return new ObjectArrayListIterator(array, start, end);
+ }
+
+ /**
+ * Gets a list iterator over part of an object or primitive array.
+ * <p>
+ * This method will handle primitive arrays as well as object arrays.
+ * The primitives will be wrapped in the appropriate wrapper class.
+ *
+ * @param array the array over which to iterate
+ * @param start the index to start iterating at
+ * @param end the index to finish iterating at
+ * @return a list iterator over part of the array
+ * @throws IllegalArgumentException if the array is not an array
+ * @throws IndexOutOfBoundsException if array bounds are invalid
+ * @throws IllegalArgumentException if end is before start
+ * @throws NullPointerException if array is null
+ */
+ public static ListIterator arrayListIterator(Object array, int start, int end) {
+ return new ArrayListIterator(array, start, end);
+ }
// Iterator wrappers
//----------------------------------------------------------------------
@@ -611,7 +721,7 @@
return ((Collection) obj).iterator();
} else if (obj instanceof Object[]) {
- return new ArrayIterator(obj);
+ return new ObjectArrayIterator((Object[]) obj);
} else if (obj instanceof Enumeration) {
return new EnumerationIterator((Enumeration) obj);
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>