Java:自定义一个顺序,然后对List按照该顺序排序。。

这里的顺序,是我自己定义的一个List<String>

用Collections.sort(List list, Comparator c)这个方法吧

像你这样的这样写:

Collections.sort(list, new Comparator<String>()
{
    public int compare(String o1, String o2)
    {
        //这里写比较方法
        int result = o1.compareTo(o2);
        return result;//然后return一个int型的值
    }
    
});

追问

谢谢你的回答。
第二个参数,这里需要写比较方法。但是现在的情况是 顺序已经定好了(人工定义),List definedOrder,然后需要将某一list按照这个definedOrder进行排序

追答

这个definedOrder是什么样的?

追问

比如说,很多种类的花,然后,自定义一个顺序 :玫瑰,牡丹,月季,荷花。
没有规律可循。

追答

哦, 这样的. 那现在关键的问题就是要排序的List如何与自定义的顺序关联.
比如这个List的元素满足什么条件是玫瑰花. 知道这个就好排序了

追问

要排序的list其实也就是这个顺序中的子集,打乱了顺序,也有一些重复的。
如何关联呢。
额,不是很会用Java。

追答

我不知道你们那边要排序的List里面放的什么, 所以不知道具体怎么判断.

追问

就是这样的:

List definedOrder={"玫瑰","牡丹","月季","荷花"};
List toBeOrderedList = {,"牡丹","荷花","月季","荷花","月季"};
然后,toBeOrderedList 就按照definedOrder排序,最后结果
为 牡丹,月季,月季,荷花,荷花。
如果有重复的不好排序的话,可以只考虑打乱的顺序

追答//如果是这样的话 给一份参考代码
String[] defined = {"玫瑰","牡丹","月季","荷花"};
final List<String> definedOrder = Arrays.asList(defined);
String[] toBeOrdered = {"玫瑰","牡丹","月季","荷花","月季","牡丹","月季","荷花","月季"};
List<String> toBeOrderedList = Arrays.asList(toBeOrdered);
Collections.sort(toBeOrderedList, new Comparator<String>()
{
    public int compare(String o1, String o2)
    {
        int io1 = definedOrder.indexOf(o1);
        int io2 = definedOrder.indexOf(o2);
        return io1 - io2;
    }
});
System.out.println(toBeOrderedList);

温馨提示:答案为网友推荐,仅供参考
相似回答