Я пытаюсь сделать так, чтобы записи истории из файла сохранения сортировались правильно, но ничего не отображается. Однако первый вариант работает, поскольку он отображает все 50 записей истории случайным образом, как и ожидалось. Не могу понять, почему не сортируется. Вот мои 2 основных файла. (Извините, если я что-то упустил или прозвучал глупо, я новичок в сортировке.)
Фрагмент 1 метода, в котором я пытаюсь выполнить сортировку:
else if (choice == 2) {
// sort by account types
for (int i = 0; i < HistoryManager.globalTransHistory.size() - 1; i++) {
for (int j = 0; j < HistoryManager.globalTransHistory.size() - i - 1; j++) {
String entry1 = HistoryManager.globalTransHistory.get(j);
String entry2 = HistoryManager.globalTransHistory.get(j + 1);
String[] parts1 = entry1.split("\\|");
String[] parts2 = entry2.split("\\|");
if (parts1.length < 2 || parts2.length < 2)
continue;
String type1 = parts1[1].replace("account type:", "").trim(); // "chequing"
String type2 = parts2[1].replace("account type:", "").trim();
if (type1.compareTo(type2) > 0) {
// swapping
HistoryManager.globalTransHistory.set(j, entry2);
HistoryManager.globalTransHistory.set(j + 1, entry1);
}
}
}
System.out.println("\n======= TRANSACTION HISTORY =======");
for (String entry : HistoryManager.globalTransHistory) {
System.out.println(entry);
}
System.out.println("===================================\n");
return;
}
Полный другой класс:
import java.util.ArrayList;
public class HistoryManager {
static ArrayList globalTransHistory = new ArrayList();
// single method to log any action
public static void logHistEntry(String actionType, int accountNum, String accountType, double amount) {
String timestamp = java.time.LocalDateTime.now()
.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
String entry = timestamp + "| account type: " + accountType + " | account#" + accountNum + " | " + actionType + " | amount $" + amount;
globalTransHistory.add(entry);
}
// public static void logAndTransferHistory(int fromAcc, int toAcc, double amount, double fromBalance, double toBalance) {
// String timestamp = java.time.LocalDateTime.now().toString();
// String entry = timestamp + " | account#" + accountNum + " | " + actionType + " | $" + amount + " | balance: $" + newBalance;
// globalHistory.add(entry);
// }
}
Подробнее здесь: https://stackoverflow.com/questions/799 ... ng-history