根据元素的值对列表进行排序

Rac*_*hel 2 java sorting collections list

如何根据元素值对列表进行排序?

在我的单元测试类,我收到名单是基于其元素的值的一个排序的形式,{sortOrder and it has value 1, 2 and 3}我现在比较returnedListexpectedList以确保这两个列表是相同的,在相同的顺序相同的元素.

我的退货和预期清单的示例:

expected List = [Code: ANALYST, SortOrder: 2, Code: STREET, SortOrder: 1]

returned List = [Code: STREET, SortOrder: 1, Code: ANALYST, SortOrder: 2]

那么我如何对SortOrder上的列表进行排序,以便我的预期列表变为:

expected List = [Code: STREET, SortOrder: 1, Code: ANALYST, SortOrder: 2]

我不能使用任何库,这个问题与Compare List Question有关,有什么建议吗?

Osc*_*mez 7

用这个:

 public static void sort(List list, Comparator c)
Run Code Online (Sandbox Code Playgroud)

所以做这样的事情:

Collections.sort(myList, myComparator)
Run Code Online (Sandbox Code Playgroud)

myComparator是一个接口,您只需要实现一个比较方法:

public int compare(Object o1, Object o2)
Run Code Online (Sandbox Code Playgroud)

所以你可以用一个匿名的内部类来做到这一点:

Collections.sort(myList, new Comparator<MyType>(){ 
    public int compare(MyType o1, MyType o2) { 
        //My implementation
    }
 });
Run Code Online (Sandbox Code Playgroud)

有关如何实现比较方法的信息,请查看此处的文档:

比较