请教一个排序问题!急…… 有各种不同域名:如:a.com一级、b.a.com二级、c.b.a.com三级……现在需要进行排序:输出结果需要:按 (c.b.a.com b.a.com a.com)三级->二级->一级 排 ! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 但是我需要高效的排序方法!我用的两个for循环 速度太慢啦!而且这个方法使用很频繁所以效率很重要啊……所以希望看到高效的排序方法…… 如果只凭点的数量,那可以自己写一个Comparator:如果域名放在数组strs中:Arrays.sort(strs,new Comparator<String>(){ public int compare(String str1,String str2){ String[] str1s=str1.split("\\."); string[] str2s=str2.split("\\."); if(str1s.length!=str2.length){ return str2s.length-str1s.length; }else{ //如果两个域名是同级的以字典顺序返回大于,从一级开始比较: int index=str1s.length-1; while(index>=0&&str1s[index].equals(str2s[index])){ index--; } if(index<0){ return 0; } return str1s[index].compareTo(str2s[index]); } }});大概就是这样吧,没有测试。 两个for能排出来(如果for中没有字符串的求子串等操作),我认为已经不错了. 如果在数组中用Arrays.sort,如果在List中则用Collections.sort。 请教一个在java中取property值的问题 java如何获得网络的剩余带宽呀? 如何制作可执行的JAR文件包? 我有java数据结构与算法的问题~高手请帮忙看看~~第一次发帖,到处询问~不好意思。 如何实现Tips功能 JEditorPane的getText()中文问题 如何在应用程序中,设置选种字体的颜色 不能完全運行java applet 读取中文的问题 关于int最大值的问题 一个JAVA新手的简单问题! 字符串替换问题
我用的两个for循环 速度太慢啦!
而且这个方法使用很频繁
所以效率很重要啊……
所以希望看到高效的排序方法……
如果域名放在数组strs中:Arrays.sort(strs,new Comparator<String>(){
public int compare(String str1,String str2){
String[] str1s=str1.split("\\.");
string[] str2s=str2.split("\\.");
if(str1s.length!=str2.length){
return str2s.length-str1s.length;
}else{
//如果两个域名是同级的以字典顺序返回大于,从一级开始比较:
int index=str1s.length-1;
while(index>=0&&str1s[index].equals(str2s[index])){
index--;
}
if(index<0){
return 0;
}
return str1s[index].compareTo(str2s[index]);
}
}
});大概就是这样吧,没有测试。
两个for能排出来(如果for中没有字符串的求子串等操作),我认为已经不错了.