【发布时间】: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