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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黑马王鹏 于 2012-8-14 20:09 编辑

这是TreeSet排序的一段代码

port java.util.*;

public class TreeSetTest {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
         TreeSet ts = new TreeSet(new StringLengthComp());//这里会报错,内部类不能在内部被实例么?为什么?
               
                ts.add("avaca");
                ts.add("ab");
                ts.add("ess");
                ts.add("zxcs");
               
                Iterator it = ts.iterator();
                while(it.hasNext()){
                        System.out.println(it.next());
                }
        }
        class StringLengthComp implements Comparator{
               
                public int compare(Object o1,Object o2){
                        String s1 = (String)o1;
                        String s2 = (String)o2;
                        
                        return new Integer(s1.length()).compareTo(new Integer(s2.length()));
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
田建 + 1

查看全部评分

5 个回复

倒序浏览
public class TreeSetTest {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
        TreeSet ts = new TreeSet(new StringLengthComp());//这里会报错,内部类不能在内部被实例么?为什么?
               
                ts.add("avaca");
                ts.add("ab");
                ts.add("ess");
                ts.add("zxcs");
               
                Iterator it = ts.iterator();
                while(it.hasNext()){
                        System.out.println(it.next());
                }
        }
        class StringLengthComp implements Comparator{
               
                public int compare(Object o1,Object o2){
                        String s1 = (String)o1;
                        String s2 = (String)o2;
                        
                        return new Integer(s1.length()).compareTo(new Integer(s2.length()));
                }
        }
}
1.你的内部类不是静态的。
2.而main方法是静态的。
3.当外部类中的静态方法访问内部类时,内部类必须也是static的。

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1

查看全部评分

回复 使用道具 举报
。。。

评分

参与人数 1技术分 +1 收起 理由
田建 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 张忠豹 于 2012-8-14 19:00 编辑

package exception;
//建议在引入类的时候,不要用java.util.*,类加载多了影响程序运行
//当然小程序是没有问题的,要是大型项目,问题就会凸现出来了
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
public class TreeSetTest {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  //创建非静态的内部类应该是这样的
  TreeSet ts = new TreeSet(new TreeSetTest().new StringLengthComp());// 这里会报错,内部类不能在内部被实例么?为什么?
  ts.add("avaca");
  ts.add("ab");
  ts.add("ess");
  ts.add("zxcs");
  Iterator it = ts.iterator();
  while (it.hasNext()) {
   System.out.println(it.next());
  }
}
class StringLengthComp implements Comparator {
  public int compare(Object o1, Object o2) {
   String s1 = (String) o1;
   String s2 = (String) o2;
   return new Integer(s1.length()).compareTo(new Integer(s2.length()));
  }
}
}

评分

参与人数 2技术分 +2 收起 理由
田建 + 1 加油
杨志 + 1

查看全部评分

回复 使用道具 举报
张忠豹 发表于 2012-8-14 18:58
package exception;
//建议在引入类的时候,不要用java.util.*,类加载多了影响程序运行
//当然小程序是没 ...

谢谢了,知道问题出在哪了!
回复 使用道具 举报
张扬123 发表于 2012-8-14 18:29
public class TreeSetTest {

        /**

嗯..是这样的!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马