java - 集合的偏移量和限制

标签 java algorithm collections

我有两套有序的 Integer小号 - SortedSet<Integer> ,称他们为set1set2 .我需要找到该集合的并集并返回子集偏移量 10 限制 10。我的意思是什么?

Set1:
1,2,5,6,7,8,11,21,23,543,1002

Set2:
11,12,15,16,17,8,111,121,123,1543,11002

Union:
1,2,5,6,7,8,11,21,23,543,1002,12,15,16,17,111,121,123,1543,11002

Union offset 10 limit 10:
1002,12,15,16,17,111,121,123,1543,11002

请注意,8 的基数和 11在联盟中是1 .

我正在寻找一种算法,它允许我不将整个集合加载到内存中(因为这些集合可能非常大,我不会浪费服务器的资源)。有没有办法做到这一点?也许一些即时库,如 commonsguava有什么帮助吗?

UPD:我自己不使用 Java 8,但使用它的解决方案也很有趣。

最佳答案

算法很简单。

Create empty hash
Create empty array
Set waste counter to 0
Iterate all sets (2 or more)
  Iterate set values
    If value not in hash
      Insert value into hash
      Increase waste counter
        If waste counter > offset (10)
          Insert value into array
          If array length == limit (10)
            Done - return array

关于java - 集合的偏移量和限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30636786/

相关文章:

除非我打印 Something Inside,否则 Java Thread 不会停止 While Loop

java - Swing JList 调整大小范围

string - 了解 Knuth Morris Pratt (KMP) 失效函数

algorithm - 在全文搜索中使用索引进行多词查询(例如网络搜索)

java - 是否可以从 Java 调用 COM API?

java - 为什么 Java 字符串比较在 Java 15 和 Java 11 中表现不同?

从一个点集到另一点集的最佳映射算法

php - 重新排序 Laravel 集合的优雅解决方案(或从一开始就完美地填充它)?

java - org.postgresql.util.PSQLException : ERROR: relation "sequence-gen" does not exist

java.util.Set、java.util.List 可序列化问题