我接到这个任务:
完成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,但是我该如何排序呢?
2条答案
按热度按时间xienkqul1#
你需要做的是定义
compare
方法。它应该有两个物体o1
以及o2
作为参数并返回-1
什么时候o1 < o2
0
什么时候o1 == o2
1
什么时候o1 > o2
你的Comparator
使用此方法作为确定元素顺序的基础。然后你给名单排序l
通过呼叫Collections.sort(l, c)
,在哪里c
是Comparator
你已经定义了。eblbsuwk2#
您可以使用下面的比较方法
然后用这个来分类