Я хочу передать в ArrayList и не сортировать его, независимо от того, что там в это
Что это должно означать? Полное упорядочение является бинарным отношением, которое удовлетворяет некоторым свойствам (антисимметрия, транзитивность, тотальность). Легче, учитывая два элемента, вы должны определить критерий для определения, который меньше/больше другого.
Вы не можете этого сделать, если не знаете, что представляют собой эти элементы. Если вы хотите отсортировать массив любого объекта A и B, типы которого вы даже не знаете, как вы можете определить, что больше, чем другое?
В Java вы можете использовать hashCode, который действительно является критерием, но это вряд ли полезно. Если вы хотите избежать дубликатов, вы можете использовать Set
, а не List
. Во всяком случае, если вы действительно хотите, чтобы сортировать элементы на основе их хэш-код, вы можете сделать это следующим образом:
private static final Comparator<Object> hashComparator
= new Comparator<Object>() {
@Override
public int compare(Object a, Object b) {
return System.identityHashCode(a) - System.identityHashCode(b);
}
@Override
public boolean equals(Object obj) {
//this is a static singleton, nothing can be equal to it
return false;
}
};
public static ArrayList Sort(ArrayList value)
{
Collections.sort(value, hashComparator);
return value;
}
EDIT: если вы заинтересованы в сортировке списка только строк и символов (или если вы хотите сортировать элементы на основе их строкового представления), то правильная вещь, которую нужно сделать, это, вероятно, преобразовать все в строки или использовать SortedMap<String, Object>
. В противном случае, вы можете сделать то же самое, я только что показал вам раньше, но с использованием более конкретной compare
функции, такие как:
public int compare(Object a, Object b) {
return a.toString().compareTo(b.toString());
}
Там нет такой сортировки по умолчанию, вы должны определить свои собственные. –
Просто заметьте, вы можете просто сделать 'Collections.sort (value)', возвращая 'List' бессмысленно, потому что' Collections.sort (value) 'уже будет изменять элементы в вашей' Collection'. –