问题描述
对已存在的ip地址进行排序,例如:192.168.10.34 127.0.0.1 3.3.3.3 105.70.11.55
算法思想
由于我们在进行字符串切割之后,我们会得到4个字符串,我们想要对对象进行排序,我们可以使用TreeSet集合来进行排序
(思想不要仅仅只局限于数组的数字排序),由于是String类,则默认的排序是字符串排序,我们需要用正则表达式把3.3.3.3每一位都添加两个0,然后用String自带的比较器来进行排序
实现代码
String ip_str = "192.168.10.34 127.0.0.1 3.3.3.3 105.70.11.55";
//将ip_str中每个字符串都添加两个0,使3变成003
String str = ip_str.replaceAll("(\\d+)","00$1");
//保留数字后三位
str = str.replaceAll("0*(\\d{3})","$1"); //如果是"+"则替换的是0没有或多个,后面是连续的数字
System.out.println(str);
//字符串切割成字符串数组
String [] arr = str.split(" +");
//定义TreeSet集合来进行对象排序
TreeSet<String> ts = new TreeSet<String>();
for(int i=0;i<arr.length;i++)
ts.add(arr[i]);//将字符串数组添加进集合
for(String ip:ts )
System.out.println(ip.replaceAll("0*(\\d+)","$1"));