public static void saveToHistory(SearchSetting s) { if (searchHistory.isEmpty() || !s.equals(searchHistory.getFirst())) { searchHistory.addFirst(new SearchSetting(s)); } else if (searchHistory.contains(s)) { // move existing entry to front, fixes #8032 - search history loses entries when re-using // queries searchHistory.remove(s); searchHistory.addFirst(new SearchSetting(s)); } int maxsize = Main.pref.getInteger("search.history-size", DEFAULT_SEARCH_HISTORY_SIZE); while (searchHistory.size() > maxsize) { searchHistory.removeLast(); } Set<String> savedHistory = new LinkedHashSet<>(searchHistory.size()); for (SearchSetting item : searchHistory) { savedHistory.add(item.writeToString()); } Main.pref.putCollection("search.history", savedHistory); }