排序字符串列表

dgenwo3n  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(392)

我接到这个任务:
完成void sort(list l)函数,该函数对包含字符串“one”、“two”、“three”、“four”的list l进行排序(尽管不一定按该顺序排列)。您应该声明一个比较器,并将其与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
    }

你知道从哪里开始吗?上面写的是list,所以我必须创建一个list,但是我该如何排序呢?

xienkqul

xienkqul1#

你需要做的是定义 compare 方法。它应该有两个物体 o1 以及 o2 作为参数并返回 -1 什么时候
o1 < o2 0 什么时候
o1 == o2 1 什么时候 o1 > o2 你的 Comparator 使用此方法作为确定元素顺序的基础。然后你给名单排序 l 通过呼叫 Collections.sort(l, c) ,在哪里 cComparator 你已经定义了。

eblbsuwk

eblbsuwk2#

您可以使用下面的比较方法

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);

相关问题