如何自定义字符串排序规则? 比如以文件名开头字母排序从a到z,如何自已写这个方法.或者API里有吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String类已经实现了按字母顺序排序的方法看下String类的API 实现comparable接口或comparator接口,重写compareTO 或compare方法 看我这篇blog的最后一个代码: Java中的排序(一) 存放在TreeSet,字符串就是按照unicode升序存放的,符合你的要求,如果要自己实现那就写自己的比较器import java.util.Iterator;import java.util.TreeSet;public class FileDesc { public static void main(String[] args) { TreeSet treeset = new TreeSet(); treeset.add("a"); treeset.add("b"); treeset.add("ef"); treeset.add("ab"); treeset.add("ce"); treeset.add("z"); String str; for(Iterator it = treeset.iterator();it.hasNext();){ str =(String)it.next(); System.out.println(str); } }}自己写的话,就得TreeSet treeset = new TreeSet(new new Comparator(){ public int compare(Object v1,Object v2){//实现这个方法就是了,查jdk } }); String 类已经实现了Comparator接口 所以可以直接实现排序如果是自定义类 那么可以让他实现这个接口,传递自定义的比较器…… String[] strs ={"AR1","TR1A","TR1B"}; Arrays.sort(strs); for(int i=0;i<strs.length;i++){ System.out.println(strs[i]); }运行结果:AR1TR1ATR1B import java.util.*;public class MyComparator1 implements Comparator{ public int compare(Object o1,Object o2) { FileDesc f1=(FileDesc)o1; FileDesc f2=(FileDesc)o2; if(f1.getFilesize()>f2.getFilesize()) { return -1; } else if(f1.getFilesize()==f2.getFilesize()) { } else { return 1; } }}else if里面如何写以getFilename()排序? 你的题目是以开头字母排序TreeSet treeset = new TreeSet(new new Comparator(){ public int compare(Object o1,Object o2){//实现这个方法就是了,查jdk char c1 = ((File)o1).getName().charAt(0);//你要得到的是文件名开头字母排序 char c2 = ((File)o2).getName().charAt(0); return c2<c1?1:(c2==c1?0:-1); } });上面的是自己写的实现,我直接写的没有运行过,你自己调试,其实public class FileDesc { public static void main(String[] args) { TreeSet treeset = new TreeSet(); treeset.add("a"); treeset.add("b"); treeset.add("ef"); treeset.add("ab"); treeset.add("ce"); treeset.add("z"); String str; for(Iterator it = treeset.iterator();it.hasNext();){ str =(String)it.next(); System.out.println(str); } }}就能实现,你非要自己写 java正则表达式怎么样应用大侠给个事例 几道基础性的习题,但很重要。(急,在线等) 各位高手,帮忙指教,急急急!!!! % 的问题::Java 中 21 % -5 = ? 如何读取文件?急! 问大家个智力题 我用EdtiPlus+JDK做Java练习,请问如何生成Exe文件呀? redhat9.0 java1.4.2如何设置path and classpath AtomicInteger类真的是线程安全的嘛?? JAVA数据库开发,有哪些好书?? String转换的小问题 JcomboxBox的使用
看下String类的API
import java.util.Iterator;
import java.util.TreeSet;public class FileDesc {
public static void main(String[] args) {
TreeSet treeset = new TreeSet();
treeset.add("a");
treeset.add("b");
treeset.add("ef");
treeset.add("ab");
treeset.add("ce");
treeset.add("z");
String str;
for(Iterator it = treeset.iterator();it.hasNext();){
str =(String)it.next();
System.out.println(str);
}
}
}自己写的话,就得TreeSet treeset = new TreeSet(new new Comparator(){
public int compare(Object v1,Object v2){//实现这个方法就是了,查jdk
}
});
如果是自定义类 那么可以让他实现这个接口,传递自定义的比较器……
Arrays.sort(strs);
for(int i=0;i<strs.length;i++){
System.out.println(strs[i]);
}运行结果:
AR1
TR1A
TR1B
public class MyComparator1 implements Comparator
{
public int compare(Object o1,Object o2)
{
FileDesc f1=(FileDesc)o1;
FileDesc f2=(FileDesc)o2;
if(f1.getFilesize()>f2.getFilesize())
{
return -1;
}
else if(f1.getFilesize()==f2.getFilesize())
{
}
else
{
return 1;
}
}
}else if里面如何写以getFilename()排序?
public int compare(Object o1,Object o2){//实现这个方法就是了,查jdk
char c1 = ((File)o1).getName().charAt(0);//你要得到的是文件名开头字母排序
char c2 = ((File)o2).getName().charAt(0);
return c2<c1?1:(c2==c1?0:-1);
}
});
上面的是自己写的实现,我直接写的没有运行过,你自己调试,其实public class FileDesc {
public static void main(String[] args) {
TreeSet treeset = new TreeSet();
treeset.add("a");
treeset.add("b");
treeset.add("ef");
treeset.add("ab");
treeset.add("ce");
treeset.add("z");
String str;
for(Iterator it = treeset.iterator();it.hasNext();){
str =(String)it.next();
System.out.println(str);
}
}
}就能实现,你非要自己写