Stream.sortmakes a stable view if the stream is streamlined. In other words, if two elements are equal, then they will retain their original order.
Thus, since your stream is created from List, you can simply make all elements equal:
protected Comparator<Product> getProductComparator() {
return (a1, a2) -> 0;
}
It's not very cool looking, but it should do the job.