首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JAVA对IP进展排序

2012-10-27 
JAVA对IP进行排序JAVA 对IP排序class IP {IP(String IP,String name){this.IPIPthis.namename}//priva

JAVA对IP进行排序
JAVA 对IP排序

class IP {IP(String IP,String name){this.IP=IP;this.name=name;}//private T sortField;private String IP;private String name;public static Comparator IPComparator=new Comparator(){@Overridepublic int compare(Object arg0, Object arg1) {IP ip1=(IP)arg0;IP ip2=(IP)arg1;return compartTo(ip1.IP,ip2.IP);}};public static Comparator nameComparator=new Comparator(){@Overridepublic int compare(Object arg0, Object arg1) {IP ip1=(IP)arg0;IP ip2=(IP)arg1;return ip1.name.compareTo(ip2.name);}};private static long[] parseIp(String ip){ip=ip.replace(".", "#");long result[]=new long[4];String[] ip1=ip.split("#");if(ip!=null){result[0]=Long.parseLong(ip1[0]);result[1]=Long.parseLong(ip1[1]);result[2]=Long.parseLong(ip1[2]);result[3]=Long.parseLong(ip1[3]);}return result;}public static int compartTo(String ip1,String ip2){        //以下方法不能判断的原因在于:例如10.4.120.5与10.50.0.0按理应该前者小,但将它们转化为数字组合后,后者位数少,所以反而变成后面一个数字更小。//String ip11=ip1.replace(".","");//String ip22=ip2.replace(".", "");//return new Long(ip11).compareTo(new Long(ip22));//比较2个IP的顺序,按照数字顺序long[] ip11=parseIp(ip1);long[] ip22=parseIp(ip2);long ip1Result=0,ip2Result=0;for(int i=0;i<4;i++){ip1Result+=(ip11[i]<<(24-i*8));}for(int i=0;i<4;i++){ip2Result+=(ip22[i]<<(24-i*8));}if(ip1Result-ip2Result>0){return 1;}else if(ip1Result-ip2Result<0){return -1;}else{return 0;}}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString(){return this.name+"-"+this.IP;}public String getIP() {return IP;}public void setIP(String iP) {IP = iP;}}

热点排行