How to sort ip address in ascending order

后端 未结 9 1845
自闭症患者
自闭症患者 2020-12-16 02:32

Is there any method to sort this? Or do I just need to split it and use a loop to compare? Input

123.4.245.23
104.244.253.29
1.198.3.93
32.183.93.40
104.30.2         


        
9条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-16 03:25

    Pad each fragment in IP to length 3 and then sort e.g. below:

        List ipList = new ArrayList();
        ipList.add("123.4.245.23");
        ipList.add("104.244.253.29");
        ipList.add("1.198.3.93");
        ipList.add("32.183.93.40");
        ipList.add("104.30.244.2");
        ipList.add("104.244.4.1");
        Collections.sort(ipList, new Comparator() {
            @Override
            public int compare(String o1, String o2) {
                String[] ips1 = o1.split("\\.");
                String updatedIp1 = String.format("%3s.%3s.%3s.%3s",
                                                      ips1[0],ips1[1],ips1[2],ips1[3]);
                String[] ips2 = o2.split("\\.");
                String updatedIp2 = String.format("%3s.%3s.%3s.%3s",
                                                      ips2[0],ips2[1],ips2[2],ips2[3]);
                return updatedIp1.compareTo(updatedIp2);
            }
        });
        //print the sorted IP
        for(String ip: ipList){
            System.out.println(ip);
        }
    

    It prints:

    1.198.3.93
    32.183.93.40
    104.30.244.2
    104.244.4.1
    104.244.253.29
    123.4.245.23

提交回复
热议问题