/* * Copyright © 2013 - Elliott Frisch * * THIS SOFTWARE IS PROVIDED UNDER THE CREATIVE COMMONS * LICENSE 3.0 "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR * A PARTICULAR PURPOSE. * * To use this software you must agree to the complete * license terms available at: * http://creativecommons.org/licenses/by/3.0/us/deed.en_US * * It is the intent of the author(s) that you may use or * modify this software for any purpose (including your own * commercial gain) provided that this notice remains in its * entirety. * * Created by Elliott Frisch - www.frischcode.com */ package com.frischcode.util; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * <b>Rationale:</b> Provide a simple and convenient * mechanism for accessing the various sort(s) for Arrays * and Collections. * * @author Elliott Frisch */ public class SortUtil { /** * Sort a Collection of Comparable Objects (using a * ComparableComparator). After sorting <b>in</b> is also * sorted. * * @param in * The Collection of Comparable objects. * @return The sorted Collection. */ public static <T extends Comparable<T>> Collection<T> sort( final Collection<T> in) { if (in != null && in.size() > 0) { return sort(in, new ComparableComparator<T>()); } return in; } /** * Sort a Collection of Objects using the provided * Comparator. After sorting <b>in</b> is also sorted. * * @param in * The Collection of Objects to sort. * @param comp * The comparator to use. * @return The sorted Collection of Objects. */ public static <T> Collection<T> sort( final Collection<T> in, Comparator<T> comp) { if (in != null && in.size() > 0) { if (in instanceof List) { Collections.sort((List<T>) in, comp); } else { List<T> al = new ArrayList<T>(in); Collections.sort(al, comp); in.clear(); in.addAll(al); } } return in; } /** * Sort an Array of Comparable Objects (using a * ComparableComparator). After sorting <b>in</b> is also * sorted. * * @param in * The Array of Comparable Objects to sort. * @return The sorted Array of Comparable Objects. */ @SafeVarargs public static <T extends Comparable<T>> T[] sort( final T... in) { if (in != null && in.length > 0) { return sort(in, new ComparableComparator<T>()); } return in; } /** * Sort any Array of Objects using the provided * Comparator. After sorting <b>in</b> is also sorted. * * @param in * The Object Array to sort. * @param comp * The Comparator to use in sorting. * @return The sorted Array of Objects. */ public static <T> T[] sort(final T[] in, Comparator<T> comp) { if (in != null && in.length > 0) { Arrays.sort(in, comp); } return in; } }
Code Pretty Print Script
Thursday, November 21, 2013
A Nicer Way to Sort
When you're dealing with production code, it's nice to have a convenient sort utility method that works with Arrays and Collections. I think you might find this class useful, especially if you can use import static!
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment