 <p>If you look closely to the <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collections.html" rel="nofollow">Collections API</a>, you will see that you have two options at your disposal:</p> <p>1) make your GetTraders class implement the Comparable interface and call</p> <pre><code>public static &lt;T extends Comparable&lt;? super T&gt;&gt; void sort(List&lt;T&gt; list) </code></pre> <p>2) create a new Comparator for the GetTraders class and call</p> <pre><code>public static &lt;T&gt; void sort(List&lt;T&gt; list, Comparator&lt;? super T&gt; c) </code></pre> <p>The first solution is the easiest one but if you need to sort the GetTraders objects according to multiple criteria then the second one is the best choice.</p> <p>As pointed out by @Vaseph, if you are using Java 8 instead, life suddenly becomes easier because all you need to do is:</p> <pre><code>traders.sort((GetTraders trade1, GetTraders trade2) -&gt; { return trade1.getBusinessName().compareTo(trade2.getBusinessName()); }); </code></pre> <p>But if you are having troubles with the Comparable and Comparator interfaces, I would encourage you to first try the pre-Java-8 solutions before diving into the magic world of the functional interfaces.</p> <hr> <p>For the sake of completeness, please also find below an example of each solution:</p> <p>1) Comparable-based solution:</p> <pre><code>import java.util.ArrayList; import java.util.Collections; import java.util.List; public class GetTraders1 implements Comparable&lt;GetTraders1&gt; { private String getTraderLegalName; private String businessName; private Object status; public GetTraders1(String getTraderLegalName, String businessName, String status) { this.getTraderLegalName=getTraderLegalName; this.businessName=businessName; this.status=status; } @Override public int compareTo(GetTraders1 that) { return this.getTraderLegalName.compareTo(that.getTraderLegalName); } @Override public String toString() { return "GetTraders [getTraderLegalName=" + getTraderLegalName + ", businessName=" + businessName + ", status=" + status + "]"; } public static void main(String[] args) { GetTraders1 getTraders1 = new GetTraders1("1", "bn", "status"); GetTraders1 getTraders2 = new GetTraders1("2", "bn", "status"); GetTraders1 getTraders3 = new GetTraders1("3", "bn", "status"); List&lt;GetTraders1&gt; list = new ArrayList&lt;&gt;(); list.add(getTraders3); list.add(getTraders2); list.add(getTraders1); System.out.println(list); Collections.sort(list); System.out.println(list); } } </code></pre> <p>2) Comparator-based solution</p> <pre><code>import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class GetTraders2 { private String getTraderLegalName; private String businessName; private Object status; public GetTraders2(String getTraderLegalName, String businessName, String status) { this.getTraderLegalName=getTraderLegalName; this.businessName=businessName; this.status=status; } @Override public String toString() { return "GetTraders [getTraderLegalName=" + getTraderLegalName + ", businessName=" + businessName + ", status=" + status + "]"; } public static void main(String[] args) { GetTraders2 getTraders1 = new GetTraders2("1", "bn", "status"); GetTraders2 getTraders2 = new GetTraders2("2", "bn", "status"); GetTraders2 getTraders3 = new GetTraders2("3", "bn", "status"); List&lt;GetTraders2&gt; list = new ArrayList&lt;&gt;(); list.add(getTraders3); list.add(getTraders2); list.add(getTraders1); System.out.println(list); Collections.sort(list, new Comparator&lt;GetTraders2&gt;() { @Override public int compare(GetTraders2 o1, GetTraders2 o2) { return o1.getTraderLegalName.compareTo(o2.getTraderLegalName); } }); System.out.println(list); } } </code></pre>