代码之家  ›  专栏  ›  技术社区  ›  Dron4K

sortedset的元素类型允许计算给定值的后继值

  •  6
  • Dron4K  · 技术社区  · 6 年前

    SortedSet 文档:

    有几种方法返回具有限制范围的子集。这样的范围 是半开的,也就是说,它们包括低端点而不是它们的端点。 高端(如适用)。如果你需要一个封闭的范围 包括两个端点),以及 元素类型允许计算 给定值的继承者 ,仅请求 从低点到后继点(高点)。

    你能解释一下什么意思吗

    元素类型允许计算给定的 价值

    哪些类型允许计算Java中的后续任务?

    3 回复  |  直到 6 年前
        1
  •  2
  •   xtratic Rob    6 年前

    元素类型允许计算给定值的后续值

    这完全取决于排序方法

    这意味着,对于元素的排序方法,可以直接计算给定值之后的排序值,它们之间不可能有任何差别。

    从文档中:

    例如,假设s是一组经过排序的字符串。以下 习惯用法从S中获得包含S中所有字符串的视图。 高,包括: SortedSet<String> sub = s.subSet(low, high+"\0");

    对于字符串: (自然排序) high + "\0" high

    对于整数: (自然排序) high + 1 高的 是的。 但是如果你的整数是从高到低排序的,那么后继的将是 high - 1 .


    对于某些值计算继任者稍微复杂一些…

    双打: (自然排序) Math.nextAfter(high, Double.POSITIVE_INFINITY) 高的 自从 nextAfter 获取后面的相邻值 高的 使任何事都不能插手 高的 nextAfter(high..) 是的。 注意,对于doubles,可能会遇到max/min值或neg/pos无穷大值的问题,因此可能需要检查 高的 第一

    对于真实世界的浮点数,这是行不通的(除非您对精度设置了一些限制)。 这只在这里有效,因为在计算机中是浮点数 无一例外 具有有限的精度,因此可以计算该精度中的下一个可能值(即 下一个 是的)。

        2
  •  2
  •   Mureinik    6 年前

    允许接受者的计算需要您的类型具有离散值(虽然这还不够)。

    Integer 是一个很好的例子 2 3 是的。继承人 4 是的。

        3
  •  1
  •   xingbin    6 年前

    例如,整个集合包含 1, 3 ,如果您直接调用,则希望从[1, 3 ]之间获得整数。

    s.subSet(1, 3); 
    

    那么3将不在子集中。

    在这种情况下,你可以 计算3之后的下一个元素 3 + 1 = 4 打电话给:

    s.subSet(1, 4); 
    

    那么3将在子集中。

    计算机制可能因类而异。与 Numberic 元素或 String ,您可以通过 + 直接的。如果您正在处理其他类型,则可以自定义自己的 计算 方法,并应与比较法相一致。