package java8.test; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.function.BiFunction; import java.util.stream.Collectors; public class QuickSort { public static List Quicksort(List v, BiFunction comparer) { if (v.size() < 2) return v; T pivot = v.get(v.size() / 2); List l = new LinkedList( Quicksort(v.stream().filter(x -> comparer.apply(x, pivot) < 0).collect(Collectors.toList()), comparer)); l.addAll(v.stream().filter(x -> comparer.apply(x, pivot) == 0).collect(Collectors.toList())); l.addAll( Quicksort(v.stream().filter(x -> comparer.apply(x, pivot) > 0).collect(Collectors.toList()), comparer)); return l; } public static void main(String[] args) { List list = Arrays.asList("bsdf","dlasdf","asldfj","radfssa","qadsfs","cwerw","zasdf","eadsf","gasdf"); BiFunction comparer = (a,b)->a.compareTo(b); List quicksort = Quicksort(list, comparer ); System.out.println(quicksort); } }