本帖最后由 皮卫凯 于 2012-9-21 01:18 编辑
- import java.util.*;
- public class CollectionsDemo {
- public static void main(String[] args) {
- sortDemo();
- }
- public static void sortDemo() {
- List<String> list = new ArrayList<String>();
- list.add("abcd");
- list.add("aaa");
- list.add("z");
- list.add("kkkkk");
- list.add("qq");
- list.add("z");
- System.out.println(list);
- // Collections.sort(list);
- Collections.sort(list, new StrLenComparator());// 这句话Myeclipse出错了,该怎么解决?
- System.out.println(list);
- }
- }
- class StrLenComparator implements Comparator<String> {
- public int compare(String s1, String s2) {
- if (s1.length() > s2.length())
- return 1;
- if (s1.length() < s2.length())
- return -1;
- return s1.compareTo(s2);
- }
- }
|
楼主注意看 提示错误,是无法从静态函数中引用非静态 变量this
主函数中:sortDemo(); 主函数是静态的,而 public static void sortDemo() 也是静态的,
Collections.sort(list, new StrLenComparator());// 这句话中的意思比较器中有用到this非静态的变量 所以会报错
为了避免,把比较器放在外面即可。
1、Collections.sort(list); 根据元素的自然顺序排序
2、Collections.sort(list, new StrLenComparator()); 根据比较器的顺序指定排序
|