您的位置:首页 > 编程语言 > Java开发

Java对IpAddress排序

2016-04-11 21:34 525 查看
       需要对存在ArrayList<String>中的ipAddress进行排序,下面做法是达不到效果的:

<span style="font-family:Microsoft YaHei;">List<Strng> ipAddress = new ArrayList<String>();
ipAddress.add("10.1.2.1");
ipAddress.add("10.121.76.89");
ipAddress.add("10.121.76.132");
ipAddress.add("10.121.76.89");
Collections.sort(ipAddress);</span>
因为其是按照字符串的标准进行排序,而不是我们需要以基数排序得到的结果,下面就用TreeMap来进行简单的处理:
package com.iqiyi.miaoyun;

import java.util.*;

/**
* Created by niuliguo on 2016/4/11.
*/
public class SortIpAddress {

public List<String> sortIpAddress(List<String> list){

Map<Double,String> treeMap = new TreeMap<Double,String>();
for(String ip : list){
String[] str = ip.split("\\.");

double key = Double.parseDouble(str[0]) * 1000000 + Double.parseDouble(str[1])*1000
+ Double.parseDouble(str[2]) + Double.parseDouble(str[3])*0.001 ;
treeMap.put(key , ip);
}
List<String> ret = new ArrayList<String>();
for( Iterator<Double> it = treeMap.keySet().iterator();it.hasNext(); ){
double key = it.next().doubleValue();
String value = treeMap.get(key);
ret.add(value);
}

return ret;
}

public static void main(String[] args){
List<String> list = new ArrayList<String>();
list.add("10.121.76.92");
list.add("10.121.76.89");
list.add("10.121.76.88");
list.add("10.121.76.132");
list.add("10.121.76.131");

SortIpAddress s = new SortIpAddress();

List<String> ipList = new ArrayList<String>();
ipList = s.sortIpAddress(list);
System.out.println(ipList);
}
}
结果是令人满意的。

Author:忆之独秀

Email:leaguenew@qq.com

注明出处:http://blog.csdn.net/lavorange/article/details/51125841
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息