EPeak Daily

Utilizing Java’s Arrays.sort() for any List of Objects

0 6


Photo by Luke Palmer on Unsplash

Sorting can be tricky, especially when your list is not of a primitive Java numeric type (Byte, Integer, Short, Long, Double, Float). Now, all situations will vary so this method might not be the best case. However, I’ve found it incredibly useful for simple coding challenges and university lab assignments.

To start, pick your list. For this example I’ll be using a list of Edges from a simple Graph data structure:

// Very simple Edge class
public class Edge {
public Vertex src;
public Vertex dst;
public double cost;

// creates an edge between two vertices
Edge(Vertex s, Vertex d, double c) {
src = s;
dst = d;
cost = c;
}
}

// List of edges
Edge[] edges = graph.getEdges();

Next, define the implementation of the java.util.Comparator interface:

class SortByCost implements Comparator<Edge> {
public int compare(Edge a, Edge b) {
if ( a.cost < b.cost ) return -1;
else if ( a.cost == b.cost ) return 0;
else return 1;
}
}

In this example, we will be sorting the edges by their cost, or distance from the src (source) vertex to the dst (destination) vertex.

Finally use the standard java.util.Arrays.sort() method:

Arrays.sort(edges, new SortByCost())

And just like that, the list of Edges is now sorted in ascending (least to greatest) order.

If you have any questions feel free to reach out on Twitter

You can also find me on GitHub or my personal website

~ Happy Coding

— Ethan Arrowood





Source link

You might also like

Leave A Reply

Hey there!

Close
of

Processing files…