[ https://issues.apache.org/jira/browse/LANG-536?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12764947#action_12764947 ]
Henri Yandell commented on LANG-536: ------------------------------------ Being defensive, commons-collections is just out of date. Problem is the existence of arrays in Java :) > Add isSorted() to ArrayUtils > ---------------------------- > > Key: LANG-536 > URL: https://issues.apache.org/jira/browse/LANG-536 > Project: Commons Lang > Issue Type: New Feature > Reporter: Sergei Ivanov > Priority: Minor > > In my unit tests I often need to verify that an array is correctly sorted. > In order to achieve this, I've got two helper methods as follows. > Is it possible to integrate these methods into ArrayUtils? > {code} > /** > * Checks that the specified array of objects is in an ascending order > * according to the specified comparator. All elements in the array must > be > * <i>mutually comparable</i> by the specified comparator (that is, > * <tt>c.compare(e1, e2)</tt> must not throw a <tt>ClassCastException</tt> > * for any elements <tt>e1</tt> and <tt>e2</tt> in the array). > * > * @param a the array to be checked. > * @param c the comparator to determine the order of the array. A > * <tt>null</tt> value indicates that the elements' > * {...@linkplain Comparable natural ordering} should be used. > * @return {...@code true}, if the array is sorted; {...@code false}, > otherwise. > * @throws ClassCastException if the array contains elements that are > * not <i>mutually comparable</i> using the specified comparator. > */ > public static <T> boolean isSorted(final T[] a, final Comparator<? super > T> c) { > if (a.length <= 1) { > // Empty or singleton arrays are always sorted > return true; > } > // Otherwise, check that every element is not smaller than the > previous > T previous = a[0]; > for (int i = 1, n = a.length; i < n; i++) { > final T current = a[i]; > if (c.compare(previous, current) > 0) { > return false; > } > previous = current; > } > return true; > } > /** > * Checks that the specified array of objects is in an ascending order, > * according to the {...@linkplain Comparable natural ordering} of its > elements. > * All elements in the array must implement the {...@link Comparable} > interface. > * Furthermore, all elements in the array must be <i>mutually > comparable</i> > * (that is, <tt>e1.compareTo(e2)</tt> must not throw a > <tt>ClassCastException</tt> > * for any elements <tt>e1</tt> and <tt>e2</tt> in the array). > * > * @param a the array to be checked. > * @return {...@code true}, if the array is sorted; {...@code false}, > otherwise. > * @throws ClassCastException if the array contains elements that are not > * <i>mutually comparable</i> (for example, strings and integers). > */ > @SuppressWarnings({"unchecked"}) > public static <T> boolean isSorted(final T[] a) { > if (a.length <= 1) { > // Empty or singleton arrays are always sorted > return true; > } > // Otherwise, check that every element is not smaller than the > previous > T previous = a[0]; > for (int i = 1, n = a.length; i < n; i++) { > final T current = a[i]; > if (((Comparable<? super T>) previous).compareTo(previous) > 0) { > return false; > } > previous = current; > } > return true; > } > {code} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.