急,请高手帮小弟解决个问题,在线等!

时间:2021-07-26 15:53:45
我文件夹Data下有A2,Z3,WW,O3...等文件夹,我要求把Data下的文件夹按英文字母从A到Z排序,输出的结果如下:

A2,
O3,
WW,
Z3
...
请问高手这个功能该如何实现?小弟在线等!谢谢!

36 个解决方案

#1


File d = new File("你的文件夹路径");
String[] fileNames = d.list();

// 自己写个内部类,然后重写 compare, :
class MyComparator implements Comparator {
     public int compare(Object obj1, Object obj2) {

Collections.sort(fileNames , new MyComparator());

 for (int i=0; i < fileNames.length ; i++) {  
File read = new File(fileNames[i]);


#2


to lianhg(lianhg):
你程序是不是没写完啊?Object obj1和Object obj2要进行比较吧?File read ,这个read对象要进行什么操作呢??能不能写清楚呢,谢谢拉!

#3


File d = new File("你的文件夹路径");
String[] fileNames = d.list();

// 自己写个内部类,然后重写 compare, :
class MyComparator implements Comparator {
     public int compare(Object obj1, Object obj2) {
         String name1 = (String) obj1;
         String name2 = (String) obj2;
         int i = 0;
         i = name1.compareTo(name2);
         return i;
     }
}
Collections.sort(fileNames , new MyComparator());

 for (int i=0; i < fileNames.length ; i++) {  
        System.out.println(fileNames[i]);
}

#4


lianhg(lianhg) 大哥:
Collections.sort(fileNames , new MyComparator());不能这样写吧,我做的测试程序是报错的啊!!!你可以试试!
package com.manual;
import java.io.*;
import java.util.*;
//自己写个内部类,然后重写 compare, :
class MyComparator implements Comparator {
    public int compare(Object obj1, Object obj2) {
        String name1 = (String) obj1;
        String name2 = (String) obj2;
        int i = 0;
        i = name1.compareTo(name2);
        return i;
    }
}
public class Test {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
File d = new File("Data/");
String[] fileNames = d.list();



Collections.sort(fileNames , new MyComparator());
//Arrays.sort(fileNames , new MyComparator());

 for (int i=0; i < fileNames.length ; i++) {  
        System.out.println(fileNames[i]);
}
}

}
下面这行报错的!
Collections.sort(fileNames , new MyComparator());
还有你的compare方法就能将字母从A---Z排序吗??

#5


File d = new File("D:\\temp\\A");
String[] fileNames = d.list();
Arrays.sort(fileNames);
for (int i=0; i < fileNames.length ; i++) {  
        System.out.println(fileNames[i]);
}

#6


你注释的代码 //Arrays.sort(fileNames  就是正确的。

#7


/********************/
/*@author guaxixi627*/
/********************/
import java.io.*;
import java.util.*;
class FileTest
{
public static void main(String[] args) 
{

File f=new File(filepath);


    String names[]=f.list();
    Arrays.sort(names,new Comparator()//利用内部类进行排序
    {
     public int compare(Object o1,Object o2)
     {
     String s1 = (String)o1;
     String s2 = (String)o2;
     return s1.toLowerCase().compareTo(s2.toLowerCase());
     }
    });
for(int i=0;i<names.length;i++)
System.out.println(names[i]);
}
}

#8


to lianhg(lianhg) :
你上面怎么没用new MyComparator()???要不然你怎样从A到Z排序啊????
应该是这样吧:Arrays.sort(fileNames,new MyComparator());可是我这样写还是报错的!你最好测一下程序,好吗?谢谢拉!

#9


/********************/
/*@author guaxixi627*/
/********************/

import java.io.*;
import java.util.*;
class FileTest
{
public static void main(String[] args) 
{

 File f=new File("filepath");
 String names[]=f.list();
          Arrays.sort(names,new Comparator()//利用内部类进行排序
    {
     public int compare(Object o1,Object o2)
     {
String s1 = (String)o1;
String s2 = (String)o2;
return s1.toLowerCase().compareTo  (s2.toLowerCase());
     }
    });
for(int i=0;i<names.length;i++)
System.out.println(names[i]);
}
}

#10


因为使用了 jdk1.5 缘故,1.4 不出错。以下是对应 1.5 的代码
File d = new File("D:\\temp\\A");
     String[] fileNames = d.list();
     Arrays.sort(fileNames, new Comparator<String>() {
public int compare(String str1, String str2) {
             int i = 0;
    i = str1.compareTo(str2);
    return i;
    }
}
      );
for (int i=0; i < fileNames.length ; i++) {  
        System.out.println(fileNames[i]);
    }

#11


to lianhg(lianhg),guaxixi627() :
我对相对路径的问题一直很疑惑!
1)eclipse中的相对路径应该和.class文件一个级别吧还是和.java文件一个级别?假如我这一行File f=new File("filepath");的filepath想换成Data\,
File f = new File("Data\");我这个Data目录应该放在我源文件的包com.manual下和我这个程序同一级还是应该放在我编译后的这个程序.class文件的同一级??以前我问其它人都说放.class一级,可是我试验放源文件一级是正确的?到底是怎么回事??
2)我在com.manual包下创建一个文件夹Data,为什么创建好的文件夹图标是包的图标,不是文件夹图标呢???而且创建的文件夹的名字怎么不叫Data,eclipse里怎么叫com.manual.Data,我明明创建的是文件夹怎么出来是包??

#12


File f = new File("Data\\") 这句中  Data文件夹的路径为:  盘符名:/项目名/Data ,如果你想要对某个包下面的文件排序,就应该改成File f = new File("com\\manual\\Data")
不知道我这样回答是否解决了你所要问的。

#13


1) String path = System.getProperty("user.dir");
   System.out.println("path :" +path);   // 当前 class 的绝对路径

2)包的路径就是文件夹

#14


to lianhg(lianhg) :
你上面怎么没用new MyComparator()???要不然你怎样从A到Z排序啊????
应该是这样吧:Arrays.sort(fileNames,new MyComparator());可是我这样写还是报错的!你最好测一下程序,好吗?谢谢拉

// 报错原因如下,你没有初始化 Test 

import java.io.*;
import java.util.*;
class FileTest
{
public static void main(String[] args) 
{
     Test t = new Test();
     t.f();
}

 void f() {
    File f=new File(filepath);


    String names[]=f.list();
    Arrays.sort(names,new Comparator()//利用内部类进行排序
    {
    public int compare(Object o1,Object o2)
    {
    String s1 = (String)o1;
    String s2 = (String)o2;
    return s1.toLowerCase().compareTo(s2.toLowerCase());
    }
    });
for(int i=0;i<names.length;i++)
System.out.println(names[i]);

}

}

#15


to guaxixi627(),lianhg(lianhg) :
我的意思是说用相对路径!这句话File f = new File("Data\\");这个Data目录我应该放在项目中的什么位置??是相对与谁的目录???

#16


to guaxixi627() :
我按照你的说法根本不行的!
我是在我com.manual包下建立了Data文件夹,然后把程序改为:
package com.manual;

import java.io.*;
import java.util.*;
class NewTest
{
public static void main(String[] args) 
{

File f=new File("com\\manual\\Data");


    String names[]=f.list();
//  利用内部类进行排序
    Arrays.sort(names,new Comparator(){
public int compare(Object o1,Object o2)
{
     String s1 = (String)o1;
     String s2 = (String)o2;
     return s1.toLowerCase().compareTo(s2.toLowerCase());
   }
});
for(int i=0;i<names.length;i++)
System.out.println(names[i]);
}
}

程序报错:
Exception in thread "main" java.lang.NullPointerException
at java.util.Arrays.sort(Unknown Source)
at com.manual.NewTest.main(NewTest.java:15)

#17


to guaxixi627(),lianhg(lianhg) :
我的意思是说用相对路径!这句话File f = new File("Data\\");这个Data目录我应该放在项目中的什么位置??是相对与谁的目录???

Data目录放到项目中的任意位置都可以。根据下面获得的路径,来确定 Data目录 的位置

1) String path = System.getProperty("user.dir");
   System.out.println("path :" +path);   // 当前 class 的绝对路径

#18


lianhg(lianhg) :
String path = System.getProperty("user.dir");这里的user.dir是指哪个目录呢?
我在com.manual包下建立Data文件夹,这个Data目录的相对路径该怎样写???

#19


lianhg(lianhg) :
String path = System.getProperty("user.dir");这里的user.dir是指哪个目录呢?

-- 这是取得绝对路径。然后,截取字符串取得项目的路径。“项目的路径”\DATA
   就是你需要的路径。
 
把下面的代码添加到你的程序中, 你就明白啦
String path = System.getProperty("user.dir");
   System.out.println("path :" +path);

#20


lianhg(lianhg):我把你说的那两行加里面了,输出如下:
path :E:\eclipse\eclipse\workspace\ManualBrowser
ManualBrowser是我eclipse建立的工程名啊!我Data目录在我ManualBrowser\j2src\com.manual包下面啊!我这句话要改成:File f = new File(path+"\j2src\com.manual");是这样吗?
你这样是取绝对路径啊!!可以不可以直接用相对路径表示???

#21


是 File f=new File(path+"j2src\\com\\manual\\Data");吗?\
我这样写程序报错啊!
path :E:\eclipse\eclipse\workspace\ManualBrowser
Exception in thread "main" java.lang.NullPointerException
at java.util.Arrays.sort(Unknown Source)
at com.manual.NewTest.main(NewTest.java:17)

#22


File f=new File(path+"j2src\\com\\manual\\Data");
--> File f=new File(path+"\j2src\\com\\manual\\Data");

#23


不过,建议你 DATA 目录 应放到 ManualBrowser 下,不要和代码放置到一起。否则,打包时,易发生路径不正确。

应放到 ManualBrowser 下,就是 path + "/DATA",简单明了/

#24


lianhg(lianhg):
我把这段代码用在jsp页面中
为什么程序输出:path :C:\Program Files\Apache Software Foundation\Tomcat 5.0\bin
怎么会是Tomcat的路径?
String path = System.getProperty("user.dir");
   System.out.println("path :" +path);
是不是只能用于java应用程序中,不能用于jsp页面呢?

#25


jsp页面中取得项目的路径的方法是 request.getContextPath()

#26



lianhg(lianhg):
request.getContextPath()是取的WEB项目的路径,如果我Data在WEB项目下,路径就应该是"
request.getContextPath()+"/Data"对吧,我做的测试request.getContextPath()结果是/Browser,这是个相对路径,对吧?
application.getRealPath("Data\\");我测试出来是绝对路径E:\eclipse\eclipse\workspace\ManualBrowser\Browser\Data,也就是说这两种方法都可以用!
如果用request.getContextPath()的话,路径要写为request.getContextPath()+"/Data";
如果用application.getRealPath("Data\\");直接就得到了绝对路径.
是不是这样的呢?谢谢!

#27


是的都可以

#28


lianhg(lianhg):
程序中
for(int i=0;i<names.length;i++)
System.out.println(names[i]);
为什么for()后不加{}呢??
for(int i=0;i<names.length;i++){
System.out.println(names[i]);
}
这两个有啥区别啊??

#29


没有区别。
for(int i=0;i<names.length;i++) 如果循环中只有一条语句,就可以不用加 {},默认执行
这个语句。

#30


总觉得不加{}的习惯不好啊!还有你看我写的代码,不知道eclipse为什么有黄色的感叹号!
package com.manual;

import java.io.*;
import java.util.*;
class NewTest
{
public static void main(String[] args) 
{

//File f=new File("com\\manual\\Data");
String path = System.getProperty("user.dir");
   System.out.println("path :" +path);
   File f=new File(path+"\\j2src\\com\\manual\\Data");

    String names[]=f.list();
//  利用内部类进行排序
    Arrays.sort(names,new Comparator(){
public int compare(Object o1,Object o2)
{
     String s1 = (String)o1;
     String s2 = (String)o2;
     return s1.toLowerCase().compareTo(s2.toLowerCase());
   }
});
for(int i=0;i<names.length;i++){
System.out.println(names[i]);
}
}
}


这段程序是黄色感叹!说Type safty:expressiong of type new Comparator() need unchecked
conversion to confirm to Comparator<? super T>
 Arrays.sort(names,new Comparator(){
public int compare(Object o1,Object o2)
{
     String s1 = (String)o1;
     String s2 = (String)o2;
     return s1.toLowerCase().compareTo(s2.toLowerCase());
   }
});

#31


import java.io.*;
import java.util.*;

class NewTest {
public static void main(String[] args) {

// File f=new File("com\\manual\\Data");
String path = System.getProperty("user.dir");
System.out.println("path :" + path);
File f = new File(path + "\\j2src\\com\\manual\\Data");

String names[] = f.list();
// 利用内部类进行排序
Arrays.sort(names, new Comparator<String>() {
public int compare(String o1, String o2) {
//String s1 = (String) o1;
//String s2 = (String) o2;
return o1.toLowerCase().compareTo(o2.toLowerCase());
}
});
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
}
}

#32


new Comparator<String>后面为什么要加<String>???JDK1.5必须这样吗??

#33


是 1.5 泛型

#34


用treemap吧,自动给你排号序了,不用那么麻烦

#35


import java.io.File;
import java.util.Collection;
import java.util.Iterator;
import java.util.TreeMap;

public class TestOrder {

/**
 * @param args
 */
public static void main(String[] args) 
{
String path = System.getProperty("user.dir");
System.out.println("path :" + path);
File f = new File(path);

String names[] = f.list();
TreeMap  tm=new TreeMap();
for (int i = 0; i < names.length; i++) 
{
//System.out.println(names[i]);
tm.put(names[i],names[i]);
}

Collection col = tm.keySet();
    Iterator it = col.iterator();
    while(it.hasNext()) 
    {
        System.out.println(it.next());
    }

    


}

}

#36


支持中文排序的!

#1


File d = new File("你的文件夹路径");
String[] fileNames = d.list();

// 自己写个内部类,然后重写 compare, :
class MyComparator implements Comparator {
     public int compare(Object obj1, Object obj2) {

Collections.sort(fileNames , new MyComparator());

 for (int i=0; i < fileNames.length ; i++) {  
File read = new File(fileNames[i]);


#2


to lianhg(lianhg):
你程序是不是没写完啊?Object obj1和Object obj2要进行比较吧?File read ,这个read对象要进行什么操作呢??能不能写清楚呢,谢谢拉!

#3


File d = new File("你的文件夹路径");
String[] fileNames = d.list();

// 自己写个内部类,然后重写 compare, :
class MyComparator implements Comparator {
     public int compare(Object obj1, Object obj2) {
         String name1 = (String) obj1;
         String name2 = (String) obj2;
         int i = 0;
         i = name1.compareTo(name2);
         return i;
     }
}
Collections.sort(fileNames , new MyComparator());

 for (int i=0; i < fileNames.length ; i++) {  
        System.out.println(fileNames[i]);
}

#4


lianhg(lianhg) 大哥:
Collections.sort(fileNames , new MyComparator());不能这样写吧,我做的测试程序是报错的啊!!!你可以试试!
package com.manual;
import java.io.*;
import java.util.*;
//自己写个内部类,然后重写 compare, :
class MyComparator implements Comparator {
    public int compare(Object obj1, Object obj2) {
        String name1 = (String) obj1;
        String name2 = (String) obj2;
        int i = 0;
        i = name1.compareTo(name2);
        return i;
    }
}
public class Test {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
File d = new File("Data/");
String[] fileNames = d.list();



Collections.sort(fileNames , new MyComparator());
//Arrays.sort(fileNames , new MyComparator());

 for (int i=0; i < fileNames.length ; i++) {  
        System.out.println(fileNames[i]);
}
}

}
下面这行报错的!
Collections.sort(fileNames , new MyComparator());
还有你的compare方法就能将字母从A---Z排序吗??

#5


File d = new File("D:\\temp\\A");
String[] fileNames = d.list();
Arrays.sort(fileNames);
for (int i=0; i < fileNames.length ; i++) {  
        System.out.println(fileNames[i]);
}

#6


你注释的代码 //Arrays.sort(fileNames  就是正确的。

#7


/********************/
/*@author guaxixi627*/
/********************/
import java.io.*;
import java.util.*;
class FileTest
{
public static void main(String[] args) 
{

File f=new File(filepath);


    String names[]=f.list();
    Arrays.sort(names,new Comparator()//利用内部类进行排序
    {
     public int compare(Object o1,Object o2)
     {
     String s1 = (String)o1;
     String s2 = (String)o2;
     return s1.toLowerCase().compareTo(s2.toLowerCase());
     }
    });
for(int i=0;i<names.length;i++)
System.out.println(names[i]);
}
}

#8


to lianhg(lianhg) :
你上面怎么没用new MyComparator()???要不然你怎样从A到Z排序啊????
应该是这样吧:Arrays.sort(fileNames,new MyComparator());可是我这样写还是报错的!你最好测一下程序,好吗?谢谢拉!

#9


/********************/
/*@author guaxixi627*/
/********************/

import java.io.*;
import java.util.*;
class FileTest
{
public static void main(String[] args) 
{

 File f=new File("filepath");
 String names[]=f.list();
          Arrays.sort(names,new Comparator()//利用内部类进行排序
    {
     public int compare(Object o1,Object o2)
     {
String s1 = (String)o1;
String s2 = (String)o2;
return s1.toLowerCase().compareTo  (s2.toLowerCase());
     }
    });
for(int i=0;i<names.length;i++)
System.out.println(names[i]);
}
}

#10


因为使用了 jdk1.5 缘故,1.4 不出错。以下是对应 1.5 的代码
File d = new File("D:\\temp\\A");
     String[] fileNames = d.list();
     Arrays.sort(fileNames, new Comparator<String>() {
public int compare(String str1, String str2) {
             int i = 0;
    i = str1.compareTo(str2);
    return i;
    }
}
      );
for (int i=0; i < fileNames.length ; i++) {  
        System.out.println(fileNames[i]);
    }

#11


to lianhg(lianhg),guaxixi627() :
我对相对路径的问题一直很疑惑!
1)eclipse中的相对路径应该和.class文件一个级别吧还是和.java文件一个级别?假如我这一行File f=new File("filepath");的filepath想换成Data\,
File f = new File("Data\");我这个Data目录应该放在我源文件的包com.manual下和我这个程序同一级还是应该放在我编译后的这个程序.class文件的同一级??以前我问其它人都说放.class一级,可是我试验放源文件一级是正确的?到底是怎么回事??
2)我在com.manual包下创建一个文件夹Data,为什么创建好的文件夹图标是包的图标,不是文件夹图标呢???而且创建的文件夹的名字怎么不叫Data,eclipse里怎么叫com.manual.Data,我明明创建的是文件夹怎么出来是包??

#12


File f = new File("Data\\") 这句中  Data文件夹的路径为:  盘符名:/项目名/Data ,如果你想要对某个包下面的文件排序,就应该改成File f = new File("com\\manual\\Data")
不知道我这样回答是否解决了你所要问的。

#13


1) String path = System.getProperty("user.dir");
   System.out.println("path :" +path);   // 当前 class 的绝对路径

2)包的路径就是文件夹

#14


to lianhg(lianhg) :
你上面怎么没用new MyComparator()???要不然你怎样从A到Z排序啊????
应该是这样吧:Arrays.sort(fileNames,new MyComparator());可是我这样写还是报错的!你最好测一下程序,好吗?谢谢拉

// 报错原因如下,你没有初始化 Test 

import java.io.*;
import java.util.*;
class FileTest
{
public static void main(String[] args) 
{
     Test t = new Test();
     t.f();
}

 void f() {
    File f=new File(filepath);


    String names[]=f.list();
    Arrays.sort(names,new Comparator()//利用内部类进行排序
    {
    public int compare(Object o1,Object o2)
    {
    String s1 = (String)o1;
    String s2 = (String)o2;
    return s1.toLowerCase().compareTo(s2.toLowerCase());
    }
    });
for(int i=0;i<names.length;i++)
System.out.println(names[i]);

}

}

#15


to guaxixi627(),lianhg(lianhg) :
我的意思是说用相对路径!这句话File f = new File("Data\\");这个Data目录我应该放在项目中的什么位置??是相对与谁的目录???

#16


to guaxixi627() :
我按照你的说法根本不行的!
我是在我com.manual包下建立了Data文件夹,然后把程序改为:
package com.manual;

import java.io.*;
import java.util.*;
class NewTest
{
public static void main(String[] args) 
{

File f=new File("com\\manual\\Data");


    String names[]=f.list();
//  利用内部类进行排序
    Arrays.sort(names,new Comparator(){
public int compare(Object o1,Object o2)
{
     String s1 = (String)o1;
     String s2 = (String)o2;
     return s1.toLowerCase().compareTo(s2.toLowerCase());
   }
});
for(int i=0;i<names.length;i++)
System.out.println(names[i]);
}
}

程序报错:
Exception in thread "main" java.lang.NullPointerException
at java.util.Arrays.sort(Unknown Source)
at com.manual.NewTest.main(NewTest.java:15)

#17


to guaxixi627(),lianhg(lianhg) :
我的意思是说用相对路径!这句话File f = new File("Data\\");这个Data目录我应该放在项目中的什么位置??是相对与谁的目录???

Data目录放到项目中的任意位置都可以。根据下面获得的路径,来确定 Data目录 的位置

1) String path = System.getProperty("user.dir");
   System.out.println("path :" +path);   // 当前 class 的绝对路径

#18


lianhg(lianhg) :
String path = System.getProperty("user.dir");这里的user.dir是指哪个目录呢?
我在com.manual包下建立Data文件夹,这个Data目录的相对路径该怎样写???

#19


lianhg(lianhg) :
String path = System.getProperty("user.dir");这里的user.dir是指哪个目录呢?

-- 这是取得绝对路径。然后,截取字符串取得项目的路径。“项目的路径”\DATA
   就是你需要的路径。
 
把下面的代码添加到你的程序中, 你就明白啦
String path = System.getProperty("user.dir");
   System.out.println("path :" +path);

#20


lianhg(lianhg):我把你说的那两行加里面了,输出如下:
path :E:\eclipse\eclipse\workspace\ManualBrowser
ManualBrowser是我eclipse建立的工程名啊!我Data目录在我ManualBrowser\j2src\com.manual包下面啊!我这句话要改成:File f = new File(path+"\j2src\com.manual");是这样吗?
你这样是取绝对路径啊!!可以不可以直接用相对路径表示???

#21


是 File f=new File(path+"j2src\\com\\manual\\Data");吗?\
我这样写程序报错啊!
path :E:\eclipse\eclipse\workspace\ManualBrowser
Exception in thread "main" java.lang.NullPointerException
at java.util.Arrays.sort(Unknown Source)
at com.manual.NewTest.main(NewTest.java:17)

#22


File f=new File(path+"j2src\\com\\manual\\Data");
--> File f=new File(path+"\j2src\\com\\manual\\Data");

#23


不过,建议你 DATA 目录 应放到 ManualBrowser 下,不要和代码放置到一起。否则,打包时,易发生路径不正确。

应放到 ManualBrowser 下,就是 path + "/DATA",简单明了/

#24


lianhg(lianhg):
我把这段代码用在jsp页面中
为什么程序输出:path :C:\Program Files\Apache Software Foundation\Tomcat 5.0\bin
怎么会是Tomcat的路径?
String path = System.getProperty("user.dir");
   System.out.println("path :" +path);
是不是只能用于java应用程序中,不能用于jsp页面呢?

#25


jsp页面中取得项目的路径的方法是 request.getContextPath()

#26



lianhg(lianhg):
request.getContextPath()是取的WEB项目的路径,如果我Data在WEB项目下,路径就应该是"
request.getContextPath()+"/Data"对吧,我做的测试request.getContextPath()结果是/Browser,这是个相对路径,对吧?
application.getRealPath("Data\\");我测试出来是绝对路径E:\eclipse\eclipse\workspace\ManualBrowser\Browser\Data,也就是说这两种方法都可以用!
如果用request.getContextPath()的话,路径要写为request.getContextPath()+"/Data";
如果用application.getRealPath("Data\\");直接就得到了绝对路径.
是不是这样的呢?谢谢!

#27


是的都可以

#28


lianhg(lianhg):
程序中
for(int i=0;i<names.length;i++)
System.out.println(names[i]);
为什么for()后不加{}呢??
for(int i=0;i<names.length;i++){
System.out.println(names[i]);
}
这两个有啥区别啊??

#29


没有区别。
for(int i=0;i<names.length;i++) 如果循环中只有一条语句,就可以不用加 {},默认执行
这个语句。

#30


总觉得不加{}的习惯不好啊!还有你看我写的代码,不知道eclipse为什么有黄色的感叹号!
package com.manual;

import java.io.*;
import java.util.*;
class NewTest
{
public static void main(String[] args) 
{

//File f=new File("com\\manual\\Data");
String path = System.getProperty("user.dir");
   System.out.println("path :" +path);
   File f=new File(path+"\\j2src\\com\\manual\\Data");

    String names[]=f.list();
//  利用内部类进行排序
    Arrays.sort(names,new Comparator(){
public int compare(Object o1,Object o2)
{
     String s1 = (String)o1;
     String s2 = (String)o2;
     return s1.toLowerCase().compareTo(s2.toLowerCase());
   }
});
for(int i=0;i<names.length;i++){
System.out.println(names[i]);
}
}
}


这段程序是黄色感叹!说Type safty:expressiong of type new Comparator() need unchecked
conversion to confirm to Comparator<? super T>
 Arrays.sort(names,new Comparator(){
public int compare(Object o1,Object o2)
{
     String s1 = (String)o1;
     String s2 = (String)o2;
     return s1.toLowerCase().compareTo(s2.toLowerCase());
   }
});

#31


import java.io.*;
import java.util.*;

class NewTest {
public static void main(String[] args) {

// File f=new File("com\\manual\\Data");
String path = System.getProperty("user.dir");
System.out.println("path :" + path);
File f = new File(path + "\\j2src\\com\\manual\\Data");

String names[] = f.list();
// 利用内部类进行排序
Arrays.sort(names, new Comparator<String>() {
public int compare(String o1, String o2) {
//String s1 = (String) o1;
//String s2 = (String) o2;
return o1.toLowerCase().compareTo(o2.toLowerCase());
}
});
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
}
}

#32


new Comparator<String>后面为什么要加<String>???JDK1.5必须这样吗??

#33


是 1.5 泛型

#34


用treemap吧,自动给你排号序了,不用那么麻烦

#35


import java.io.File;
import java.util.Collection;
import java.util.Iterator;
import java.util.TreeMap;

public class TestOrder {

/**
 * @param args
 */
public static void main(String[] args) 
{
String path = System.getProperty("user.dir");
System.out.println("path :" + path);
File f = new File(path);

String names[] = f.list();
TreeMap  tm=new TreeMap();
for (int i = 0; i < names.length; i++) 
{
//System.out.println(names[i]);
tm.put(names[i],names[i]);
}

Collection col = tm.keySet();
    Iterator it = col.iterator();
    while(it.hasNext()) 
    {
        System.out.println(it.next());
    }

    


}

}

#36


支持中文排序的!