а еще переменная во втором цикле называется j, что создает впечатление будто это вложенный цикл, хотя на самом деле он не находится внутри первого. Это немного затрудняет чтение кода.
а еще массив накладывает определенные ограничения по размеру входных данных. Дело в том, что чтобы разместить массив, нам нужен длинный непрерывный блок памяти (мы не можем раскидать элементы по свободным местам). Я думаю при очень больших входных данных что-нибудь вроде LinkedList будет работать лучше и надежнее.
equals говорит нам что объект идентичен. а как известно строка в java это объект.
compare это уже метод работы со строкой. другой уровень так сказать. Абстракция выше.
ну и ниже что бы не писать, linked list вообще ничего не даст. Все его преимущества что описывают, на практике не нужны ни разу (ну только в математическом софте может быть, и то сам создатель не встречал с его слов, где это что то дает).
/если мы говорим про java есть как минимум 3ри распространенные библиотеки работы коллекциями. посмотрите в ту сторону. Если сильно нужно строки или массивы строк как объекты.
public boolean equals(Object o) The method determines whether the Number object that invokes the method is equal to the object that is passed as an argument.