Это связано с порядком набора символов ASCII, где «Z» идет первым, чем «a»
RuleBasedCollator проверяет только первую букву строки для сортировки. Как правило, вы установили (A < a). В нем перечислены все строки, начинающиеся с заглавных букв, а затем идут строчные.
Поскольку ваш список содержит строку, начинающуюся со специальных символов, я предлагаю создать два списка для сортировки. Один для строки, начинающейся со специальных символов, а затем другой список, содержащий все другие значения. Сортируйте эти два списка по отдельности, а затем объединяйте отсортированные списки. Я попробовал приведенный ниже код, и он отлично работает
// Input list
List<String> name = new ArrayList<String>();
final String[] specialChars = { "_", ">" };
List<String> specCharList = new ArrayList<String>();
List<String> strList = new ArrayList<String>();
List<String> finalList = new ArrayList<String>();
String rules = "< '_' < '>' ";
boolean isSpec = false ;
for(String names : name) {
isSpec = false ;
for(int i=0;i<specialChars.length;i++) {
if(names.startsWith(specialChars[i])) {
// System.out.println("Name : "+names);
isSpec = true ;
}
}
// to sort special char list and normal list
if(isSpec) {
specCharList.add(names);
} else {
strList.add(names);
}
}
try {
// To sort special character list
Collections.sort(specCharList, new RuleBasedCollator(rules));
// Add the sorted list to finallist
finalList.addAll(specCharList);
// to sort other list
Collections.sort(strList, String.CASE_INSENSITIVE_ORDER);
// Add the sorted list to finallist
finalList.addAll(strList);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Final Output List --------");
for(String names : finalList) {
System.out.println(names);
}
Я не квалифицирован для обсуждения "лучше всего", который является тем, к чему сводится запрос на рекомендации.
Trac имеет обширное (и по моему скромному мнению хорошо спроектированный) сменная инфраструктура; если Вы - тяжелый разработчик Python и интересуетесь настройкой Вашей системы покупки билетов (или если Вы не и находите какой-либо из существующих плагинов полезным), таков может быть фактор для рассмотрения.
Я использую покупку билетов Assembla, и она работает просто великолепно..., никогда не нуждался ни в чем больше.
Кроме того, прямо сейчас я размещаю часть своего проекта в Google Code, и он также имеет минимальную все же очень полезную систему слежения.
Это зависит. Только для попытки littl это - littl, который сделало бы любое размещенное решение. Если бы оказывается, что Вы - настоящий фанат - по разным причинам, Вы хотели бы выполнить свой очень собственный VPS (например, от slicehost, который я люблю). Я использовал Trac в течение достаточно долгого времени, и это - большой выбор, если Вы имеете единственный проект и нуждаетесь только в основной функциональности. Недавно переключенный на redmine, который имеет больше функций и более подходит для многопроектной среды.
Я только использовал билеты Trac, так как я использую также Wiki Trac и репозиторий подверсии Trac. Имеет смысл мочь связаться назад и вперед между билетами, страницами Wiki и исходным кодом.
Однако пользовательский интерфейс билета является очень веб-1,0 стилями: большая перезагрузка страницы и навигация. Страница редактирования билета является также слишком длинной. Я, конечно, предпочел бы редактирование стиля tadalist.
Возможно, электронная таблица Google является способом пойти. Легко отредактировать и отсортировать, и у Вас может быть конференция по Skype при редактировании списка билета вместе.