JAVA实现IP排序

java 实现ip地址分类并排序 阅读详情

1  需求概述

        实现对ipv4或者ipv6的排序。由于ipv4和ipv6无法比较大小,所以需要单独对ipv4和ipv6进行排序,然后分别存储在已经排好序的集合中。

2  实现

import java.math.BigInteger;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.SortedSet;
import java.util.TreeSet;

public class IPUtil {
    private static Long ipv4ToNumeric(String ip) {
    	Scanner sc = new Scanner(ip).useDelimiter("\\.");
    	Long restValue = (sc.nextLong() << 24) + (sc.nextLong() << 16) + (sc.nextLong() << 8) + (sc.nextLong());
    	sc.close();
    	return restValue;
    }
    
    private static BigInteger ipv6ToNumeric(String ip) {
    	BigInteger ipNum = null;
    	try {
			ipNum = new BigInteger(1, InetAddress.getByName(ip).getAddress());
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  	
    	return ipNum;
    }
    
    public static Map<String, SortedSet<String>> ipSort(List<String> ips) {
    	List<String> ipv4 = new ArrayList<>();
    	List<String> ipv6 = new ArrayList<>();
    	List<String> uncertain = new ArrayList<>();
    	Map<String, SortedSet<String>> restMap = new HashMap<>(3);
    	
    	for (String ip : ips) {
    		if (ip.contains(":")) {
    			ipv6.add(ip);
    		} else if (ip.contains(".")) {
    			ipv4.add(ip);
    		} else {
    			System.out.println("不属于ipv4或者ipv6: " + ip);
    			uncertain.add(ip);
    		}
    	}
    	
    	// ipv4排序
    	Comparator<String> ipv4Comparator = Comparator.comparing(IPUtil::ipv4ToNumeric);
    	SortedSet<String> rest_ipv4 = new TreeSet<>(ipv4Comparator);
    	rest_ipv4.addAll(ipv4);
    	System.out.println(rest_ipv4);
    	restMap.put("ipv4", rest_ipv4);
    	
    	// ipv6排序
    	Comparator<String> ipv6Comparator = Comparator.comparing(IPUtil::ipv6ToNumeric);
    	SortedSet<String> rest_ipv6 = new TreeSet<>(ipv6Comparator);
    	rest_ipv6.addAll(ipv6);
    	System.out.println(rest_ipv6);
    	restMap.put("ipv4", rest_ipv6);
    	
    	// 返回排序结果
    	return restMap;
    }
}
import java.util.Arrays;
import java.util.List;

public class HelloWorld {
    public static void main(String[] args) {
    	List<String> ips = Arrays.asList("192.168.0.1", "192.168.0.2", "192.168.0.9", "9.9.9.9", 
    			"127.0.0.1", "192.168.0.90", "192.168.0.89", "192.168.0.8", "192.168.0.9", "192.163.0.9", 
    			"::874C:2B35", "::874B:2B35", "::874B:2B34", "::874C:2B36");
    	IPUtil.ipSort(ips);
    }
}

        解释:先对列表中的所有ip进行分类,按照ipv4和ipv6进行分类,分别存入对应的列表中,然后分别对ipv4和ipv6进行排序,最后存到hashmap中返回。

java获取机器ip、mac 阅读详情

相关推荐

Java 实现ip 地址排序

Java ip 地址排序Java ip 地址排序Java ip 地址排序Java ip 地址排序

java 对IP地址进行排序,或类ip地址的字符串进行排序

java 实现ip地址和端口号的排序,类ip地址字符串排序,StringTokenizer类的使用

心藏_的博客 809

手把手教你用示波器搞定PCIe 5.0 REFCLK时钟信号测量(附完整参数解读)

本文详细介绍了如何使用示波器进行PCIe 5.0 REFCLK时钟信号测量,包括示波器与探头的选择、关键参数的测量方法及解读,以及实战中的常见问题与解决方案。通过手把手教学和完整参数解读,帮助硬件工程师高效完成时钟信号测量,确保系统稳定性。

weixin_28704565的博客 359

java对ip进行排序_利用正则表达对IP进行排序的实现代码

1、补零,使得可以按照字符串顺序进行比较。2、截取保留后三位(ip地址最多就3位)。3、利用Arrays.sort()方法对截取的字符串进行排序。。4、去除多余的0,回复ip原样。5、实现代码:package IPSort;import java.util.Arrays;/*** 利用正则表达对IP进行排序,分四步* @author tiger**/public class IPSortTest ...

weixin_36294980的博客 411

知识抽取框架OneKE

OneKE 中指令的格式采用了类 JSON 字符串的结构,本质上是一种字典类型的字符串。优化知识抽取的性能不仅能够强化模型对世界知识的理解和应用,还能够构建知识要素之间的跨领域的深度关联和依赖,这些都是大规模知识图谱构建的关键依赖。一直是知识图谱大规模落地的关键难题之一,因为真实世界的信息高度碎片化、非结构化,大语言模型在处理信息抽取任务时仍因抽取内容与自然语言表述之间的巨大差异导致效果不佳,自然语言文本信息表达中因隐式、长距离上下文关联存在较多的歧义、多义、隐喻等,给知识抽取任务带来较大的挑战。

qq_32907491的博客 3206

使用在UE5中使用AirSim插件Eigen库头文件引用报错,出现报错的解决方式

如图所示,用红线圈出的两条头文件引用会报错,提示无法找到他们,但是可以发现的是,他们的路径书写是没有问题的。在终端中运行时候,会出现如下的报错。

GFCLJY的博客 1006

java 按ip排序_java 实现ip地址分类并排序

java 实现ip地址分类并排序小女子为了谋生,前几天参加华为实习生笔试,结果被虐惨了(小皮鞭都没这么痛!)。。。一共3道编程题,小女子就会一题(掩面而泣)。小女子不甘心啊,茶不思饭不想地就坐在电脑前想想想!!!(会不会精尽人亡 (°□°;) )终于啊,老天开眼了!!!灵感如潮水一阵一阵冲击着小女子,想明白其中一题!!!小女子满足了,欣慰。今天要讨论的就是其中占一半分的大题——对ip地址进行分类排...

weixin_35669769的博客 1051

基于Hadoop生态的大数据异常检测平台搭建

批处理:用Spark MLlib的LOF(局部异常因子,适合高密度数据)、(单类支持向量机,适合高维数据);流处理:用Flink ML的(实时聚类,检测离群点)、ADWIN(自适应滑动窗口,处理概念漂移)。数据层:用Flume/Kafka采集数据,HDFS存储,Hive管理元数据;计算层:用Spark处理离线批数据,Flink处理实时流数据;算法层:用孤立森林(批)、3σ原则(流)检测异常;可视化层:用Grafana做仪表盘,Prometheus+Alertmanager报警。这个平台能处理。

软件工程实践的博客 933

java ip排序_Java对IP地址排序

package day05;import java.util.Set;import java.util.TreeSet;/** IP地址排序*/public class RegexDemo {public static void main(String[] args) {String ip_str = "192.168.10.34 127.0.0.1 3.3.3.3 105.70.11.55";/...

weixin_33958381的博客 605

labview汽车电子通用测试程序架构,CAN通讯上位机

结合做过的汽车电子测试项目,车身控制器测试,CAN网络模块测试,电机控制器功能测试,汽车仪表盘视觉及功能测试、电气盒功能测试、EOL下线检测、车用空调控制器功能测试等项目,结合实际项目,整理编写的一个汽车电子,通用测试架构,包含项目的讲解等。6、数据保存 、数据处理、 曲线显示 、报警处理等。7、CAN总线故障信息监控及记录保存。2、参数设置(CAN端口及参数)5、CAN通讯+数据解析。

ali2805486883的博客 2757

Halcon实战:5种边缘检测算子对比(Sobel、Roberts、Prewitt、Kirsch、Canny)

本文深入对比了Halcon中Sobel、Roberts、Prewitt、Kirsch和Canny五大边缘检测算子的实战表现与核心差异。通过工业图像实例与代码解析,提供了基于噪声水平、边缘连续性及实时性要求的场景化选型指南,帮助工程师精准选择最适合的算子以优化视觉检测流程。

weixin_29266007的博客 392

JAVA对IP进行排序

JAVA 对IP排序 [code="java"] import java.util.*; public class TestIpSort { public static void main(String[] args){ //System.out.println(Arrays.toString(IP.class.getDeclaredFields())); IP ip5=ne...

Sweet之家 870

UFAST车道线检测 Ultra-Fast-Lane-Detection 从环境搭建到复现完成(一)

UFAST车道线检测 Ultra-Fast-Lane-Detection 从环境搭建到复现完成(一)

m0_46364958的博客 4345

如何对ip格式的字符串集合进行排序

如何对ip格式的字符串集合进行排序、ip排序

fang0604631023的博客 492

【图像超分】论文精读:Accelerating the Super-Resolution Convolutional Neural Network(FSRCNN)

作为应用于图像超分辨率 (SR) 的成功深度模型,超分辨率卷积神经网络 (SRCNN) [1,2] 在速度和恢复质量方面都比以前的手工制作的模型表现出更好的性能。然而,高计算成本仍然阻碍了它的实际使用,这需要实时性能(24 fps)。在本文中,我们旨在加速当前的 SRCNN,并提出了一种紧凑的沙漏形 CNN 结构,以实现更快和更好的 SR。我们从两个方面重新设计了SRCNN结构。首先,我们在网络末端引入了一个反卷积层,然后将映射直接从原始低分辨率图像(无插值)学习到高分辨率图像。其次,我们通过在映射之前缩小

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

PHP 实现ip排序,正则表达式怎样对IP进行排序

这次给大家带来正则表达式怎样对IP进行排序,正则表达式对IP进行排序的注意事项有哪些,下面就是实战案例,一起来看一下。1、补零,使得可以按照字符串顺序进行比较。2、截取保留后三位(ip地址最多就3位)。3、利用Arrays.sort()方法对截取的字符串进行排序。。4、去除多余的0,回复ip原样。5、实现代码:package IPSort;import java.util.Arrays;/*** ...

weixin_42706667的博客 264

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JAVA中List的排序

对于List的排序,第一印象很可能就是用Collections.sort(list); 这个排序是升序排列,一般情况下,是好用的,但是如果碰到这样一种情况: List<String> list = new ArrayList<String>(); list.add("192.168.12.1");list.add("192.168.2.1"); 使用Collectio...

weixin_30332705的博客 182

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java 按ip排序_Java排序类似IP这样的不定长的字符串进行排序-IP排序

根据类似IP这样的字符串进行排序有时难免遇到类似IP或者其他字符分割的单号等等,这样的字段进行排序。排序思想大致就是根据字符切割开,然后再从前往后比较。 因为我用的是数字大小进行比较的,不能使用string的默认排序,不然1001竟然会排在2的前面。要是直接用切割后的那段字符串作为排序字段的杠精请绕道。 根据字符串切割方式很多,split、正则···· 网上看到枚举方式的很耳目一新,就是使用 St...

weixin_36198673的博客 220

java统计日志qps_【原创】基于日志增量,统计qps,并基于ip排序

增量统计日志行数(只统计上一秒)dns_qps.py#!/usr/bin/env python#_*_coding:utf-8_*_import datetimeimport reimport oslog_files = './dns_logs' #填写要分析的源日志seek_files = './seek_log.tmp' #生成的临时文件,只用于保存位置seek信息,建议放/tmp/下la...

weixin_42342226的博客 395

IP地址排序(使用正则表达式)

需求:给定一组IP地址,对IP地址按照A、B、C类进行排序 说明:给定的IP地址是一个字符串。给定的IP地址如下: String ip_str = "23,12,10.5 192.168.100.223 3.3.3.3 10.10.10.10"; package mypack; import java.util.Arrays; public class RegexDe...

孙小鸿的博客 928

正则表达式排序:ip地址排序

package collection; import java.util.Arrays; import java.util.TreeSet; public class Demo6 {  /**   * @ip地址排序   */  public static void main(String[] args) {   String str = "192.68.1.254 102.49.

lily0806的专栏 1538

Java中List<Map>的排序

public List queryIpaddress(String queryParam) { List<Map<String, String>> list = JSONUtil.getBeanFromJSONString(queryParam);...

474

Java实现合并IP段,未验证,思路正确

方法中,我们首先按照CIDR起始IP进行排序,然后使用一个循环来合并范围。如果当前合并范围的结束IP加1大于等于下一个范围的起始IP,说明这两个范围可以合并,我们更新当前合并范围的结束IP为较大的值。如果无法合并,我们将当前合并范围添加到结果列表中,并更新当前合并范围为下一个范围。使用Java编写,合并一批CIDR格式的IP段,主要是判断是否有小范围的IP段可以合并成大范围的IP段,要求不能丢弃IP,也不能增加IP。方法用于提取CIDR范围的起始IP和结束IP,并将它们表示为整数。方法来合并这些范围。

weixin_42486226的博客 627

java正则表达式 校验邮件, ip排序, 字符串处理实例

package test; import java.util.*; class MainTest { public static void main(String[] args) { test_1(); ipSort(); checkMail(); } /* * 需求:对邮件地址进行校验。 */ public static void checkMail()

nicolas9974 655

华为OD机试真题 新系统 2026-06-07 Java&Go&C 实现【内网IP有效性校验】

企业内网运维中,需要对分配的IP地址段进行有效性校验:给定一个存储内网IP地址列表,要求筛选出符合A类内网网段(10.0.0.0-10.255.255.255)的IP地址,并按“网段层级”(即IP 的第二个分段数值/第三分段/第四分段)升序排序。

MISAYAONE的博客 307

黑马程序员_ip 排序

---------------------- android培训、java培训、期待与您交流! ---------------------- import java.util.*; class  practice32 { public static void main(String[] args)  { String str="192.168.1.189   10.10.10.1

a87848180的专栏 300
上一篇: 哈希表实现
下一篇: Java实现动态代理
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值