排序字符串列表

时间:2014-03-11 17:43:26

标签: java list sorting

我接受了这项任务:

  

完成函数void sort(List l),对包含字符串的列表l进行排序   “一”,“二”,“三”,“四”(虽然不一定按顺序)。您应声明一个Comparator,并将其与Collections.sort函数一起使用。比较器应使用上述的comp函数。列表l在排序时将被更改。

我已经写过的代码是:

import java.util.*;

public class CW3 {

    private static HashMap < String, Integer > map = new HashMap < String, Integer > ();

    public CW3() {
        map.put("one", 1);
        map.put("two", 2);
        map.put("three", 3);
        map.put("four", 4);

        List listB = Arrays.asList("A", "B", "C");
    }

    public static void main(String[] args) {
        System.out.println(new CW3().comp("one", "two"));
        System.out.println(new CW3().comp("two", "one"));
        System.out.println(new CW3().comp("one", "one"));
    }

    int comp(String s1, String s2) {
        int i1 = map.get(s1);
        int i2 = map.get(s2);
        return (i1 < i2 ? -1 : (i1 == i2 ? 0 : 1));
    }

    void sort(List l) {
        Comparator c = new Comparator() {

            public int compare(Object o1, Object o2) {
                return 0; // FIXME change this so it calls comp
            }
        };
        // now sort l using the comparator c
        // FIXME complete this line
    }

任何想法从哪里开始?它说列表所以我必须创建一个列表,但那我将如何对它们进行排序?

2 个答案:

答案 0 :(得分:1)

您需要做的是定义compare方法。它应该将两个对象o1o2作为参数并返回

    -1 时,
  • o1 < o20
  • 时,
  • o1 == o21
  • 时,
  • o1 > o2

您的Comparator使用此方法作为决定元素顺序的基础。然后,您可以通过调用l对列表Collections.sort(l, c)进行排序,其中c是您定义的Comparator

答案 1 :(得分:0)

你可以使用下面的比较法

public class StepComparator implements Comparator<Step>{

@Override
public int compare(String so1, String s2) {

    if(map.get(s1)>map.get(s2)) return 1;

    return -1;
}

}

然后你用它来对它们进行排序

StepComparator  comparator = new  StepComparator();
Collections.sort(list,comparator);