Collection.sort()基于第一次排序的第二次排序

use*_*002 0 java sorting collections

我有一个问题清单List<RSSQuestion>,我正努力进行排序:先用自己的keyActivity,然后在每个keyActivitysubActivities; 我需要根据问题理清问题subActivities.

例如:

  1. OutLine设计(keyActivity)
    1. SubActivity One
  2. 规范(keyActivity)
    1. 概观
    2. 积压

我所拥有的代码如下,即基于的问题对问题进行排序keyActivity,但我不知道如何根据以下内容进行第二次排序subActivity:

private static List<RSSQuestion> sortingExtractedData(List<RSSQuestion> extractedDataByKeyactivity) {
    List<RSSQuestion> exctractedData = new ArrayList<>();

    Collections.sort(extractedDataByKeyactivity, new Comparator<RSSQuestion>() {

        @Override
        public int compare(RSSQuestion o1, RSSQuestion o2) {
            return o1.getKeyActivity().compareTo(o2.getKeyActivity());
        }
    });

    for (RSSQuestion rssQuestion : extractedDataByKeyactivity) {
        Collections.sort(rssQuestion.getSubActivity(), new Comparator<String>() {

            @Override
            public int compare(String o1, String o2) {
                return o1.compareTo(o2);
            }
        });
    }

    exctractedData.addAll(extractedDataByKeyactivity);
    return exctractedData;
}
Run Code Online (Sandbox Code Playgroud)

请让我知道,如何对其余的进行排序subActivities

wes*_*ton 5

它都应该有一个做Comparator,但你只能去SubActivityKeyActivity是相同的(即keyActivityCompare == 0):

Collections.sort(extractedDataByKeyactivity, new Comparator<RSSQuestion>() {

    @Override
    public int compare(RSSQuestion o1, RSSQuestion o2) {
        int keyActivityCompare = o1.getKeyActivity().compareTo(o2.getKeyActivity());
        if (keyActivityCompare == 0)
          return o1.getSubActivity().compareTo(o2.getSubActivity());
        return keyActivityCompare;
    }
});
Run Code Online (Sandbox Code Playgroud)