2013-02-18 2 views
1

Я хотел бы поместить букву «h» между «u» и «v». Я нашел решение, но я думаю, что это можно решить короче и красивее.Пользовательский алфавитный заказ

public class CustomStringSort 
{ 
    public static void main(String[] args) 
    { 
     String[] abc = "abcdefghijklmnopqrstuvwxyz".split(""); 

     List<String> letters = Arrays.asList(abc); 

     Collections.sort(letters, new MyStringComparator()); 

     for(String letter : letters) 
     { 
      System.out.println(letter); 
     } 
    } 

    static class MyStringComparator implements Comparator<String> 
    { 
     @Override 
     public int compare(String o1, String o2) 
     { 
      if(o1.equals("h") && o2.compareTo("u") <= 0) 
      { 
       return 1; 
      } 

      if(o1.equals("h") && o2.compareTo("v") >= 0) 
      { 
       return -1; 
      } 

      if(o2.equals("h") && o1.compareTo("u") <= 0) 
      { 
       return -1; 
      } 

      if(o2.equals("h") && o1.compareTo("v") >= 0) 
      { 
       return 1; 
      } 

      return o1.compareTo(o2); 
     } 
    } 
} 
+1

Рассмотрят http://codereview.stackexchange.com/ –

+2

, как вы делаете кажется правильным , – mtk

+3

Будьте осторожны, вы только обмениваетесь строчными буквами. Кроме того, вам нужно сравнить строки или символы? – Luciano

ответ

0

Я могу предложить вам использовать перечисляемый тип, не знают, как реализовать, но перечисление производятся для пользовательских списков

+0

Я тоже думал об этом. Что-то вроде A (1), B (2), C (3) ... U (20), H (21), V (22) ... Где число в фигурных скобках является ранжированием. Но это не лучше. – GarfieldKlon

Смежные вопросы