「ip排序JAVA」java排序comparator
今天给各位分享ip排序JAVA的知识,其中也会对java排序comparator进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java算法 将ip地址段拆分成一个个
- 2、数据在物理层是怎么对ip包头排序的
- 3、用java语言,写一段代码,比较两个ip地址的大小
- 4、IP数据包分段到目的网络后要重组,请问他们是怎样排序的???
- 5、如何对IP地址进行排序
- 6、IP 地址排序Java
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的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。