Есть ли способ проверить, что LinkedList<String> находится в порядке убывания?
public static boolean verifyRecords(LinkedList<String> recordList, String order) throws Exception {
/*To check ascending order*/
if("Ascending".equalsIgnoreCase(order) || "A".equalsIgnoreCase(order)) {
String previous = new String();
for(String current : recordList) {
if(current.compareTo(previous) < 0)
return false;
previous = current;
}
} else if("Descending".equalsIgnoreCase(order) || "D".equalsIgnoreCase(order))
{
for(String current : recordList) {
if(current.compareTo(previous) > 0)
return false;
previous = current;
}
}
return true;
}
Здесь я даю новую String(), т.е. Empty, строку для начала в порядке возрастания. Но для По убыванию, какой должна быть начальная строка, чтобы начать сравнение в порядке убывания, которое я должен использовать?
Любая помощь приветствуется.
2 ответа
Вам не нужно зацикливаться до последнего элемента, вы можете сравнивать любые неровности и отрываться от них для достижения ваших результатов или проверки списка.
if ("Ascending".equalsIgnoreCase(order) || "A".equalsIgnoreCase(order)) {
for (int i = 1; i < recordList.size(); i++) {
if (recordList.get(i - 1).compareTo(recordList.get(i)) > 0) {
isSorted = false;
break;
}
}
} else if ("Descending".equalsIgnoreCase(order)
|| "D".equalsIgnoreCase(order)) {
for (int i = 1; i < recordList.size(); i++) {
if (recordList.get(i - 1).compareTo(recordList.get(i)) < 0) {
isSorted = false;
break;
}
}
}
return isSorted;
Вы можете использовать Collections.reverse(список) для сравнения. Идея состоит в том, чтобы создать поверхностную копию списка записей, отсортировать по убыванию и сравнить их.
LinkedList<String> recordList = new LinkedList<String>(Arrays.asList("a","B", "c"));
LinkedList<String> validateList = new LinkedList<String>(recordList);
Collections.sort(validateList); // sorts in ascending order
Collections.reverse(validateList); // reverses the ascending ordered list
System.out.println(recordList.equals(validateList));