【问题标题】:Custom alphabetic order自定义字母顺序
【发布时间】:2013-02-18 17:41:00
【问题描述】:

我想将字母“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);
        }
    }
}

【问题讨论】:

  • 你的做法似乎是正确的。
  • 小心你只交换小写字母。另外,你需要比较字符串还是字符?
  • 您是否总是比较单个字符串,并且总是小写?
  • 是的,单字符和小写。

标签: java string sorting alphabetical


【解决方案1】:

我可以建议你使用枚举类型,不确定如何实现,但枚举是为自定义列表制作的

【讨论】:

  • 我也想过。类似 A(1),B(2),C(3)...U(20),H(21),V(22)... 大括号中的数字是排名。但这不是更好。
猜你喜欢
  • 2012-09-08
  • 1970-01-01
  • 2018-01-17
  • 1970-01-01
  • 2019-01-23
  • 2012-11-02
  • 2014-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多