Index: MapUtils.java =================================================================== RCS file: /home/cvspublic/jakarta-commons/collections/src/java/org/apache/ commons/collections/MapUtils.java,v retrieving revision 1.12 diff -u -r1.12 MapUtils.java --- MapUtils.java 19 Aug 2002 21:56:18 -0000 1.12 +++ MapUtils.java 12 Oct 2002 20:46:26 -0000 @@ -1166,4 +1166,74 @@ public static SortedMap lazySortedMap(SortedMap map, Factory factory) { return new LazySortedMap(map, factory); } + + + /** + * Converts the given array into a {@link Map}. Each element of the array + * must be either a {@link Map.Entry} or an Array, containing at least two + * elements, where the first element is used as key and the second as + * value. This method can be used to initialize: + * + * <pre> + * // Create a Map mapping colors. + * Map colorMap = MapUtils.asMap(new String[][] {{ + * {"RED", "#FF0000"}, + * {"GREEN", "#00FF00"}, + * {"BLUE", "#0000FF"}}); + * </pre> + * + * @param array an array whose elements are either a {@link Map.Entry} or + * an Array, containing at least two elements. + * @throws ArrayIndexOutOfBoundsException if one elment of this Array is + * itself an Array containing less then two elements. + * @throws IllegalArgumentException if the array contains elements other + * than {@link Map.Entry} and an Array. + * @throws NullPointerException if the array contains <code>null</code> + * elements. + * @return a Map that was created from the array. + * @see #toMapEntry(Object) + */ + public static Map asMap(Object[] array) { + Map map = new HashMap(array.length); + for (int i = 0; i < array.length; i++) { + Map.Entry entry = toMapEntry(array[i]); + map.put(entry.getKey(), entry.getValue()); + } + return map; + } + + + /** + * Wraps the {@link Map.Entry} interface around the given object. This + * method will fail, if the object is neither instance of {@link + * Map.Entry} nor an Array (of at least <code>length >= 2</code>). If the + * object is an Array, then the first element will be used as + * key and the second will be used as value. + * <p> + * <b>Caution:</b> if the Array contains less then two elements, an + * {@link ArrayIndexOutOfBoundsException} will not be thrown before the + * {@link Map.Entry}'s {@link Map.Entry#getKey()} or {@link + * Map.Entry#getValue()} methods are used. + * + * @param object will be used as the core of the {@link Map.Entry}. Must + * be either an instance of {@link Map.Entry} or an Array of at least + * <code>length >= 2</code>). + * @return the object itself, if it is an instance of {@link Map.Entry} or + * a new instance of {@link Map.Entry}, if the object is an Array. + * @throws IllegalArgumentException if the object is neither instance of + * {@link Map.Entry} nor an Array. + * @throws NullPointerException if the object is <code>null</code>. + */ + public static Map.Entry toMapEntry(Object object) { + if (object instanceof Map.Entry) { + return (Map.Entry) object; + } else if (object.getClass().isArray()) { + Object[] array = (Object[]) object; + return new DefaultMapEntry(array[0], array[1]); + } else { + throw new IllegalArgumentException(object + + " is neither of type Map.Entry nor an Array."); + } + } + }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>