У меня есть карта, что я хочу, чтобы отсортировать его содержимое в соответствии с некоторыми правилами:Сортировка карта в соответствии с некоторыми правилами
- Сортировать карту в алфавитном порядке (от А до Z) в соответствии с его значениями и не его Ключи.
- Игнорировать регистр Чувствительность значений при их сортировке.
- Учитывайте повторяющиеся слова (слова с точными буквами) Написание & Корпус).
- Сортировка буквенных цифр в алфавите (Cbc2ee должно появиться до Cbc100ee).
- Обращение с английскими словами (área должно появляться в словах, начинающихся с буквы «a», но на самом деле оно появляется после слов, начинающихся с буквы «z», с учетом другой буквы).
Я думаю, что я хочу, все логично. Я был в состоянии выполнить пункты 1, 2 & 3 через этот код:
public <K, V extends Comparable<? super V>> LinkedHashMap<K, V> sortMapByValues(Map<K, V> map) {
SortedSet<Map.Entry<K, V>> sortedEntries = new TreeSet<Map.Entry<K, V>>(
new Comparator<Map.Entry<K, V>>() {
@Override
public int compare(Map.Entry<K, V> e1, Map.Entry<K, V> e2) {
String a = (String)e1.getValue();
String b = (String)e2.getValue();
int diff = a.compareToIgnoreCase(b);
if (diff == 0)
diff = a.compareTo(b);
return diff != 0 ? diff : 1; // Special fix to preserve words with similar spelling.
}
}
);
sortedEntries.addAll(map.entrySet());
LinkedHashMap<K, V> sortedMap = new LinkedHashMap<K, V>();
for(Map.Entry<K, V> sortedEntry : sortedEntries)
sortedMap.put(sortedEntry.getKey(), sortedEntry.getValue());
return sortedMap;
}
Point (4) я нашел сценарий для него, но я не мог объединить его с моим кодом: http://www.davekoelle.com/alphanum.html
Поинт (5) также я нашел для этого сценарий, но я не смог объединить его с моим кодом: http://www.javapractices.com/topic/TopicAction.do?Id=207
Поскольку эти моменты повлияют на метод сравнения (...). Любой может мне помочь?
Кажется мне, что на самом деле решение 4 и 5 вместо этого решит 1, 2, 3. Способ сделать это - использовать скрипт с 4, а затем заменить механизм сортировки вторым примером из 5. – Kraylog
Код, который вы нашли для Point (4), прямо на деньги, и код, который вы нашли для Point (5), также стоит на деньги. Если вы не можете объединить их в свой код, вам нужно лучше ознакомиться с языком Java. Переполнение стека предназначено для вопросов о конкретных вещах и ответа на них; он не предназначен для того, чтобы попросить людей написать свой код для вас. –
Конечно, у вас всегда могут быть прославленные шлюхи, которые пишут ваш код для вас, заманивая их обильной щедростью. –