我需要解决的问题是需要将IP地址前缀及其相关数据存储在一棵树中,以便日后进行查询。我从文件中读取这些地址,文件可能包含多达1600万个记录,并且文件中可能会有重复项,我也需要将它们存储下来。
我编写了自己的二叉搜索树,但了解到Java中的TreeMap使用红黑树实现,但TreeMap不能包含重复项。
我希望查询时间为O(logn)。数据结构需要在内存中,因此我也不确定如何存储1600万个节点。
我想问一下:使用类似guava这样的库将IP插入Multi-map中是否会对性能造成太大影响?还是有更好的方法可以做到这一点?
我编写了自己的二叉搜索树,但了解到Java中的TreeMap使用红黑树实现,但TreeMap不能包含重复项。
我希望查询时间为O(logn)。数据结构需要在内存中,因此我也不确定如何存储1600万个节点。
我想问一下:使用类似guava这样的库将IP插入Multi-map中是否会对性能造成太大影响?还是有更好的方法可以做到这一点?
TreeMap
也不是Guava的Multimap
允许使用前缀。无论它们是通过树还是哈希表实现的,它们都不允许像“查找1.2.3.4的最长包含前缀”这样的操作;至少不是直接的(NavigableMap
可以在这里提供帮助)。 - maaartinus