「ip排序JAVA」java排序comparator

博主:adminadmin 2023-03-19 17:47:15 331

今天给各位分享ip排序JAVA的知识,其中也会对java排序comparator进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java算法 将ip地址段拆分成一个个

拆分啊,可以用下面的方法:

先定义一个String接受字符串进来,或者把字符串用“”括起来,然后用这个变量或者“”括起来的,substring截取字符串,条件是第一个~~前的,用indexof,(注意截取位置不包括最后一个),把其截取出来存入你想存的地方,成功后把字符串截取出来的部分从原字符串中去掉,同时也把第一个~~去掉,,然后继续截取第一个~~前的,一个循环把这些括起来,然后有多少ip,截取多少次,要放数组,放数组,要放list放list,还不你说了算?/?

public class testIPSplit {

/**

* @param args

* 例如58.63.239.160~~58.63.239.191变成 58.63.239.160 58.63.239.161 。。。。。问题补充:

* 有一个字符串的IP组:10.46.40.1--10.46.88.127,将这个ip地址段拆分为一个个ip地址,如

* 10.46.40.1;10.46.40.2;10.46.40.3。。。一直到10.46.88.125;10.46.88.126;10.46.88.127,

* 最后将这些单个地址存入一个数组中 要写一个算法

*

*

*/

public static void main(String[] args) {

String ipin="58.63.239.160~~58.63.239.191~~58.63.239.160~~58.63.239.191~~58.63.239.160~~58.63.239.191";/*定义一个字符串把你要转换的ip地址接受进来*/

System.out.println("开始时接收到的字符串是:"+ipin);

int account=0;

for(int k=0;kipin.length()-1;k++){

if("~".equals(ipin.substring(k,(k+1))) "~".equals(ipin.substring((k+1),(k+2)))){

account++;

}

}

if(!"~".equals(ipin.substring(ipin.length()-1, ipin.length())) !"~".equals(ipin.substring(ipin.length()-2, ipin.length()-1))){

account++;

}

String[] ipout=new String[account];

int i=0;

int count=0;

for(i=0;iipin.length();i++){

if(ipin!=""){

if(count1){

if(ipin.indexOf("~~")==-1 ){

count++;

ipout[i]=ipin;/*取出ip地址放入数组中*/

ipin=ipin.substring(0,ipin.length());

}

if(ipin.indexOf("~~")!=-1){

ipout[i]=ipin.substring(0,ipin.indexOf("~~"));/*取出ip地址放入数组中*/

ipin=ipin.substring(ipin.indexOf("~~")+2,ipin.length());

}

}

}

}

System.out.println("把里面的ip地址取出来后放入数组中,数组的长度是:"+ipout.length);

for(int j=0;jipout.length;j++){

System.out.println("从字符串中取出的第"+(j+1)+"个IP地址是:"+ipout[j]);

}

}

}

算了,本来也不是为了分才给你回答的,我花了点时间给你写了一个,我测试过,可以使用,到时候把类的名字改过来,注意下我有没有少粘贴括号的话,放到程序中,可以直接运行。

对了,粘贴一下显示结果吧:

***********************************************************************************************************************

开始时接收到的字符串是:58.63.239.160~~58.63.239.191~~58.63.239.160~~58.63.239.191~~58.63.239.160~~58.63.239.191~~58.63.239.191~~58.63.239.160~~58.63.239.191

把里面的ip地址取出来后放入数组中,数组的长度是:9

从字符串中取出的第1个IP地址是:58.63.239.160

从字符串中取出的第2个IP地址是:58.63.239.191

从字符串中取出的第3个IP地址是:58.63.239.160

从字符串中取出的第4个IP地址是:58.63.239.191

从字符串中取出的第5个IP地址是:58.63.239.160

从字符串中取出的第6个IP地址是:58.63.239.191

从字符串中取出的第7个IP地址是:58.63.239.191

从字符串中取出的第8个IP地址是:58.63.239.160

从字符串中取出的第9个IP地址是:58.63.239.191

数组长度是随着你的输入变的记得那个分隔符,变了中间所有用到分隔符的也要变更

数据在物理层是怎么对ip包头排序的

数据在物理层对IP排序的过程如下:

数据在发至数据流层的时候将被拆分,在传输层的数据叫段,网络层叫包,数据链路层叫帧,物理层叫比特流,这样的叫法叫PDU(协议数据单元)。

OSI中每一层都有每一层的作用。比如网络层就要管理本机的IP的目的地的IP。数据链路层就要管理MAC地址(介质访问控制)等等,所以在每层拆分数据后要进行封装,以完成接受方与本机相互联系通信的作用。

用java语言,写一段代码,比较两个ip地址的大小

Ip地址:a.b.c.d

比较Ip地址的大小就是

先比较两个IP的a部分,如果谁的大,那这个Ip就是叫大的Ip;

如果相等,就比较b部分;

向下走直到d部分。 public boolean compare(String startIp,String endIp){

String startips[]=startIp.split("\\.");

String endIps[]=endIp.split("\\.");

for(int i=0;istartips.length;i++){

if(Integer.parseInt(endIps[i])Integer.parseInt(startips[i])){

flag=true;

break;

}else{

if(Integer.parseInt(endIps[i])==Integer.parseInt(startips[i])){

continue;

}else{

break;

}

}

}

IP数据包分段到目的网络后要重组,请问他们是怎样排序的???

IP分片在《TCP/IP卷二》中有详解,下面说明一下重组过程:

1)当IP需要分片时,会从原来的分组中把IP首部和IP选项复制到新的分组中,IP首部复制在一个结构中,只复制那些将被复制到每个分片中的选项。

2)设置分片包括MF比特的偏移字段(ip_off)。如果原来分组中已设置了MF比特,则在所有分片中都把MF置位。如果原来分组中没有设置MF比特,则除了最后一个分片外,其他所有分片中的MF都置位。

3)为分片设置长度,以网络字节序存储长度。

4)从原始分组中把数据复制到分片中。调整新创建的分片的mbuf分组首部,使其具有正确的全长。把新分片的接口指针清零,把ip_off转换成网络字节序,计算新分片的检验和。通过m_nextpkt把该分片与前面的分片链接起来。

如何对IP地址进行排序

将所有的IP地址添加到EXCEL表格中,然后点击数据,排序,然后选择比如:降序排列等进行排序即可。

IP 地址排序Java

package src;

import java.util.Comparator;

import java.util.List;

import java.util.ArrayList;

import java.util.Collections;

class Ip { //定义ip bean

int ip1;

int ip2;

int ip3;

int ip4;

public Ip(int ip1, int ip2, int ip3, int ip4) {

this.ip1 = ip1;

this.ip2 = ip2;

this.ip3 = ip3;

this.ip4 = ip4;

}

public int getIp1() {

return ip1;

}

public void setIp1(int ip1) {

this.ip1 = ip1;

}

public int getIp2() {

return ip2;

}

public void setIp2(int ip2) {

this.ip2 = ip2;

}

public int getIp3() {

return ip3;

}

public void setIp3(int ip3) {

this.ip3 = ip3;

}

public int getIp4() {

return ip4;

}

public void setIp4(int ip4) {

this.ip4 = ip4;

}

}

class ComparatorUser implements Comparator {

public int compare(Object arg1, Object arg2) {

Ip ip1 = (Ip) arg1;

Ip ip2 = (Ip) arg2;

int flag = ip1.getIp1() - ip2.getIp1();

if (flag == 0) { //如果一段相等用二段排序,以此类推

flag = ip1.getIp2() - ip2.getIp2();

} else if (flag == 0) {

flag = ip1.getIp3() - ip2.getIp3();

} else if (flag == 0) {

flag = ip1.getIp4() - ip2.getIp4();

}

return flag;

}

}

public class Test {

public static void main(String[] args) {

ListIp ipList = new ArrayListIp(); //定义ip List

ipList.add(new Ip(255, 2, 3, 4)); //存放ip,你的ip是从文本中读出来的.我相信你会读,也会放.

ipList.add(new Ip(172, 7, 8, 2));

ipList.add(new Ip(2, 3, 4, 5));

ipList.add(new Ip(2, 1, 2, 3));

ipList.add(new Ip(1, 2, 3, 4));

ipList.add(new Ip(202, 2, 3, 4));

ComparatorUser comparator = new ComparatorUser();

Collections.sort(ipList, comparator);

for (Ip ip : ipList) { //输出结果,jdk 1.5以上可以这么遍历list,如果你是1.4 就用list的长度遍历即可

System.out.println(ip.getIp1() + "." + ip.getIp2() + "."

+ ip.getIp3() + "." + ip.getIp4());

}

}

}

运行结果如下.

1.2.3.4

2.1.2.3

2.3.4.5

172.7.8.2

202.2.3.4

255.2.3.4

关于ip排序JAVA和java排序comparator的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。