如何组织Collections.binarySearch Java analog以查找TreeMap对象?

如何组织Collections.binarySearch Java analog以查找TreeMap对象?,java,binary-search,treemap,Java,Binary Search,Treemap,我必须使用1.42 Java。我使用TreeMap是为了使put、remove的Olog n复杂性。让我们假设键是单词的int偏移量,值是单词的长度。我需要不太严格的搜索-就像在Collections.binarySearch中一样-它可以返回特殊的负值,如果没有找到确切的键,则可以从中计算插入点,而不是简单的答案a-la not found 让我们假装我们有一个文本编辑器。 此处|表示光标位置。 Collections.binarySearch和ArrayList返回以下示例的-inserti

我必须使用1.42 Java。我使用TreeMap是为了使put、remove的Olog n复杂性。让我们假设键是单词的int偏移量,值是单词的长度。我需要不太严格的搜索-就像在Collections.binarySearch中一样-它可以返回特殊的负值,如果没有找到确切的键,则可以从中计算插入点,而不是简单的答案a-la not found

让我们假装我们有一个文本编辑器。 此处|表示光标位置。 Collections.binarySearch和ArrayList返回以下示例的-insertion point-1


word1 w | ord2 word3

能否详细说明如何使用计算出的插入点?例如,如果此映射包含指定键的映射,containsKey只会返回true。当我使用ArrayList时,如果Collections.binarySearch返回负值,我计算了它指向下一项的插入点,然后减去1,以便在编辑器中获得单击单词的索引。不幸的是,NavigableMap仅在1.6Java中引入。是否有任何替代数据结构的方法?我指的是一组具有扩展可能性的第三方类,即使在1.42 Java中也能工作。好吧,有一个方法headMapkey不确定它是否存在于1.4中,它将返回一个比密钥小的所有密钥的映射。如果密钥不存在,则获取它并在该子映射上调用lastKey。