A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张华廷 于 2012-6-25 14:12 编辑

/*
集合框架的工具类
Collections;

*/
import java.util.*;
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("kkkk");
    list.add("qq");
    list.add("cc");
    list.add("z");
   
    sop(list);
    //Collections.sort(list);
    Collections.sort(list,new StrLenComparator());
    /*1 错误
d:\Users\Administrator\Desktop\集合>javac CollectionsDemo.java
CollectionsDemo.java:26: 无法从静态上下文中引用非静态 变量 this
                                Collections.sort(list,new StrLenComparator());*/
                                                      
    sop(list);
   }
  
   public static void sop(Object obj)
   {
     System.out.println(obj);
   }
   
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);
   }
}   
}

4 个回复

倒序浏览
给你改了一下你看看是大括号的问题 要把StrLenComparator单独封装


import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;


class CollectionsDemo
{
                        public static void main(String[] args)
                        {
                                List<String> list = new ArrayList<String>();
                                
                                list.add("abcd");
                                list.add("aaa");
                                list.add("z");
                                list.add("kkkk");
                                list.add("qq");
                                list.add("cc");
                                list.add("z");
                                
                                sop(list);
                                //Collections.sort(list);
                                Collections.sort(list,new StrLenComparator());
                                /*1 错误

d:\Users\Administrator\Desktop\集合>javac CollectionsDemo.java
CollectionsDemo.java:26: 无法从静态上下文中引用非静态 变量 this
                                Collections.sort(list,new StrLenComparator());*/
                                             sop(list);
                        }        
               
                        public static void sop(Object obj)
                        {
                                        System.out.println(obj);
                        }
}
                        
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);
                        }
}                                


        

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
/*
集合框架的工具类
Collections;

*/
import java.util.*;
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("kkkk");
                list.add("qq");
                list.add("cc");
                list.add("z");
   
                sop(list);
            //Collections.sort(list);
                Collections.sort(list,new StrLenComparator());
                 /*1 错误
                d:\Users\Administrator\Desktop\集合>javac CollectionsDemo.java
                CollectionsDemo.java:26: 无法从静态上下文中引用非静态 变量 this
                                Collections.sort(list,new StrLenComparator());*/
                                                      
                sop(list);
   }
  
   public static void sop(Object obj)
   {
     System.out.println(obj);
   }
   
   static class StrLenComparator implements Comparator<String>//也可以在比较器这个类上加上static关键字,静态方法访问的内部类必须是静态的
   {
        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);
                }
        }   
}
回复 使用道具 举报
谢了,
/*
集合框架的工具类
Collections;



*/
import java.util.*;

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("kkkk");
                                list.add("qq");
                                list.add("cc");
                                list.add("z");
                               
                                sop(list);
                                //Collections.sort(list);
                                Collections.sort(list,new StrLenComparator());
                               
                                sop(list);
                        }       
               
                        public static void sop(Object obj)
                        {
                                        System.out.println(obj);
                        }
                       
                        static class StrLenComparator implements Comparator<String>
{                                              //静态类,在看毕老师视频上没有去写static
                        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);
                        }
}                               
}
回复 使用道具 举报
李伟 发表于 2012-6-25 12:44
/*
集合框架的工具类
Collections;

谢了,哥们,错误解决了、
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马