gpt4 book ai didi

java - 仅使用 NavigableSet/SortedSet 接口(interface)按首字母搜索字符串

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:20 24 4
gpt4 key购买 nike

我有一个:

String s = "ab" + Character.MAX_VALUE + Character.MAX_VALUE + Character.MAX_VALUE + "cd";

我们将其放入 TreeSet<String> treeSet 。现在我必须使用前 3 个字符 "ab" + Character.MAX_VALUE 找到这个字符串。方法treeSet.sublist("ab" + Character.MAX_VALUE, true, "ab" + Character.MAX_VALUE + Character.MAX_VALUE, true)对我不起作用。有什么办法让它发挥作用吗?由于字符溢出,我无法将查询的最后一个字符更改为 char + 1。

最佳答案

具体答案很简单,您可能已经知道了:

treeSet.subSet("ab" + Character.MAX_VALUE, "ac")

(这与 treeSet.subSet("ab"+ Character.MAX_VALUE, true, "ac", false) 相同)。

假设您在变量(通常是字符串)中收到三个字符,这可能说起来容易做起来难。如果您的字符串以 Character.MAX_VALUE 结尾,则需要截掉所有尾随 Character.MAX_VALUE,然后递增最后一个剩余字符。还有一种特殊情况:如果您的字符串全部由 Character.MAX_VALUE 组成,则需要使用 tailSet() 而不是 subSet()。通过一些 if 语句和循环,所有这些都可以被编程。快乐编码。

更简单的选择:始终使用tailSet()。这保证包含该字符串(如果存在)。从尾部取出第一个字符串,检查它是否以您的三个字符开头。如果是,则您已找到满足搜索条件的字符串。如果尾部集为空或第一个字符串不是以您的三个字符开头,则您的字符串不存在,无法找到。

关于java - 仅使用 NavigableSet/SortedSet 接口(interface)按首字母搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43362868/

24 4 0