在Objective-C可可中,我们拥有NSIndexSet
类,该类通过保留一系列范围来有效地存储一系列唯一索引。例如。集1、2,...,30、57将存储为范围1-30和57,而不是32个数字的数组。这有助于以快速简便的方式存储大量选择。例如,如果在一个表中选择了介于1到1百万之间的所有行,则索引集会收缩到很小的范围,并且可以快速进行比较和相交。
不幸的是,这对于Google而言相当困难。 Java是否有等效类?
最佳答案
这似乎是一个有用的类,而且我不记得标准的实现。
这是一些可能有用的指针。
A range intersection algorithm better than O(n)?
http://www.codeproject.com/KB/recipes/rangeset.aspx
http://healpix-rangeset.googlecode.com/svn/trunk/healpix-rangeset/src/org/asterope/healpix/LongRangeSet.java
http://pcj.sourceforge.net/docs/api/bak/pcj/set/IntRangeSet.html
Data structure to build and lookup set of integer ranges
Representing sparse integer sets?
http://www.iis.uni-stuttgart.de/intset/doc/intset/TreeIntegerSet.html