Sorting an ArrayList of Vehicles using quick sort
In method 1 the sorted list you create here:

ArrayList&lt;Vehicle&gt; sorted = new ArrayList&lt;Vehicle&gt;();


is never used and overwritten here:

sorted = lesser;


Just drop the variable sorted and return lesser.



There is no reason to limit the method to ArrayLists or even Vehicles. Just have Vehicle implement the standard Comparableinterface and let your method have the signature:

protected &lt;T extends Comparable&lt;T&gt;&gt; List&lt;T&gt; quickSort(List&lt;T&gt; list) {
  // ...
}