gpt4 book ai didi

java - 存储子网以将 IP 地址与子网匹配的最佳数据结构

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:17 24 4
gpt4 key购买 nike

我有一个记录列表,每条记录中都包含以下字段。

<Network address of subnet, subnet mask, Object>. 

对于每个传入的数据包,我必须读取客户端地址,并使用每个子网掩码来找出它属于哪个子网(从我的列表中)并返回相应的对象。

目前我正在使用以网络地址作为键的 HashMap 来存储记录。但问题是,如果一个IP地址属于表中的多个子网,那么我必须选择具有最大CIDR前缀(最小子网)的子网,并且我不能选择任何其他子网。

例如,我有以下两条记录

<128.30.20.0, 255.255.255.0, Object-1>
<128.30.0.0, 255.255.0.0, Object-2>

然后,IP 地址“128.30.20.1”应始终选择第一个记录,因为它是一个比第二个记录更小的网络。 Hashmap 不保证记录的顺序正确。我的方法是以这样一种方式保存这些记录,即它们始终按较小的网络始终位于开头的顺序排列。

这个记录列表将被传递到其他一些应用程序,其中它们只是迭代列表以找出从 0 位置开始的匹配项。 (他们只是不想在最后进行额外的处理。)

有人可以建议一些java中的数据结构来完成这个任务吗?

最佳答案

当你说列表时,我假设你指的是 map 。树状图怎么样? http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html请注意,自定义比较器将用于设置所需的迭代顺序。

关于java - 存储子网以将 IP 地址与子网匹配的最佳数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24895270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com