参考 http://blog.youkuaiyun.com/u012854870/article/details/78052159
加了些修改。(return 处,若数据不存在自定义的顺序中,放到 自定义顺序的最后面(这些没有出现在自定义集合中的数据会按照它在目标数据里的顺序 进行显示 ))
public static void main(String[] args) {
// 自定义一个顺序
String[] regulation = {"语文","数学","外语"};
final List<String> regulationOrder = Arrays.asList(regulation);
String[] ordered = {"政治","语文","外语","数学","历史","物理","化学"};
List<String> orderedList = Arrays.asList(ordered);
Collections.sort(orderedList, new Comparator<String>()
{
public int compare(String o1, String o2)
{
int io1 = regulationOrder.indexOf(o1);
int io2 = regulationOrder.indexOf(o2);
return (io1==-1 || io2==-1)?(io2-io1):(io1 - io2);
}
});
System.out.println(orderedList);
}