黑马程序员技术交流社区

标题: ip是怎么比大小的呀,一个ip是一个4byte,四个字节加起来? [打印本页]

作者: doglovely    时间: 2016-3-7 18:14
标题: ip是怎么比大小的呀,一个ip是一个4byte,四个字节加起来?
把存入一个txt文件,编写程序把这些IP按数值大小,从小到达排序并打印出来。
61.54.23以下IP1.245
61.54.231.9
61.54.231.246
61.54.231.48
61.53.231.249TreeSet好像不对?这个怎么写呀?
作者: BlackFlag    时间: 2016-3-8 00:32
毕向东视频里有,好像是第25天讲正则表达式里的习题。大致思路是把每个ip的4个部分补0,每部分凑够3位;然后将这些ip字符串存入字符串数组,使用Arrays.sort()字符串排序,因为位数相同字符串比较顺序就是ip大小顺序。然后再去掉每个ip多余的0,按顺序输出即可。核心就是正则表达式。
作者: doglovely    时间: 2016-3-8 14:39
谢谢呀!把正则视屏看看!java都得看那方面的视屏呀?
作者: 萌萌的_O30IH    时间: 2016-3-8 22:34
还没学到呢
作者: ccyabc    时间: 2016-3-8 22:41
BlackFlag 发表于 2016-3-8 00:32
毕向东视频里有,好像是第25天讲正则表达式里的习题。大致思路是把每个ip的4个部分补0,每部分凑够3位;然 ...

谢谢,我也刚刚看到这,谢谢
作者: doglovely    时间: 2016-3-9 12:31
谁有正则表达式的视屏?在网上没看到呀!
作者: doglovely    时间: 2016-4-5 20:23
ip排序的答案?
//定义一个ip排序的方法
        public static void ipSort(){
                String ip="61.54.231.245  61.54.231.9  61.54.231.246 61.53.231.249";
                //ip最多需要补两个0
                ip = ip.replaceAll("(\\d+)", "00$1");
                //System.out.println(ip);
                //ip去掉多余的0,ip变成都是三位数
                ip = ip.replaceAll("0*(\\d{3})","$1");
                //System.out.println(ip);
                //对ip进行切割,变成字符数组
                String[] arr = ip.split(" ");
                //用TresSet进行知我排序
                TreeSet<String> ts = new TreeSet<String>();
                for(String s : arr){
                        ts.add(s);
                }
                for(String s: ts){
                        //把0去掉
                        s = s.replaceAll("0*(\\d+)", "$1");
                        System.out.println(s);
                }
        }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2