比较Java中的Ip范围列表(使用CIDR)

比较Java中的Ip范围列表(使用CIDR),java,ip,range,cidr,Java,Ip,Range,Cidr,我有一个用CIDR指定的IP范围列表。我想比较这些范围,并删除已包含在另一个范围中的所有范围 我有: 10.152.0.0/14 10.152.2.0/24 10.153.3.0/24 在结果中,只应保留10.152.0.0/14,因为其他两个已经包含在其中 我尝试使用org.apache.commons.net.util包,但如果我没有弄错的话,它只能将一个范围与一个地址进行比较,而不能比较范围本身 是否有Java库可以帮助我比较这些范围?请查看以下链接。您需要自己进行检查,但是方法调用isI

我有一个用CIDR指定的IP范围列表。我想比较这些范围,并删除已包含在另一个范围中的所有范围

我有:

10.152.0.0/14

10.152.2.0/24

10.153.3.0/24

在结果中,只应保留10.152.0.0/14,因为其他两个已经包含在其中

我尝试使用org.apache.commons.net.util包,但如果我没有弄错的话,它只能将一个范围与一个地址进行比较,而不能比较范围本身


是否有Java库可以帮助我比较这些范围?

请查看以下链接。您需要自己进行检查,但是方法调用
isInRange
已经实现(没有文档记录)。这一点在之前也已经得到了回答

好的,这似乎与org.apache.commons.net.util-->SubnetUtils.SubnetInfo中的
isInRange
非常相似。我希望有一种方法可以直接比较两个范围。好吧,我有点像你建议的那样做了。我没有使用CIDRUtils,但如上所述,使用org.apache.commons.net.util包创建列表中每个范围的对象。之后,我通过将每个范围的第一个和最后一个Ip与所有其他范围进行比较来手动检查它们。我是在“isInRange
getAllAddresses”的帮助下完成的。如果范围可以相互重叠,这将不起作用,而我的情况并非如此。