
import java.util.Comparator;
public class Exercise23_05 {
public static void main(String[] args) {
int[] list1 = new int[10];
for (int i = list1.length - 1, j = 0; i >= 0; i--)
System.out.println(Arrays.toString(list1));
System.out.println(ordered(list1));
double[] list2 = new double[10];
for (int i = 0; i < list2.length; i++)
System.out.println(Arrays.toString(list2));
System.out.println(ordered(list2));
Integer[] list3 = new Integer[10];
for (int i = 0; i < list3.length; i++)
System.out.println(Arrays.toString(list3));
System.out.println(ordered(list3, false));
Double[] list4 = new Double[10];
for (int i = 0; i < list4.length; i++)
System.out.println(Arrays.toString(list4));
System.out.println(ordered(list4, new SortComparator<>()));
public static boolean ordered(int[] list) {
return ordered(list, true);
public static boolean ordered(int[] list, boolean ascending) {
double[] temp = new double[list.length];
for (int i = 0; i < list.length; i++)
return ordered(temp, ascending);
public static boolean ordered(double[] list) {
return ordered(list, true);
public static boolean ordered(double[] list, boolean ascending) {
for (int i = 0; i < list.length - 1; i++) {
if (list[i] > list[i + 1])
if (list[i] < list[i + 1])
public static extends Comparable> boolean ordered(E[] list) {
return ordered(list, true);
public static extends Comparable> boolean ordered(E[] list, boolean ascending) {
for (int i = 0; i < list.length - 1; i++) {
if (list[i].compareTo(list[i + 1]) > 0)
if (list[i].compareTo(list[i + 1]) < 0)
public static boolean ordered(E[] list, Comparator super E> comparator) {
return ordered(list, comparator, true);
public static boolean ordered(E[] list, Comparator super E> comparator, boolean ascending) {
for (int i = 0; i < list.length - 1; i++) {
if (comparator.compare(list[i], list[i + 1]) > 0)
if (comparator.compare(list[i], list[i + 1]) < 0)
static class SortComparator implements Comparator {
public int compare(E o1, E o2) {
if (o1 instanceof Comparable) {
if (((Comparable) o1).compareTo(o2) > 0) return 1;
else if (((Comparable) o1).compareTo(o2) < 0) return -1;
if (o1.hashCode() > o2.hashCode())
else if (o1.hashCode() < o2.hashCode())

