- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个:
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/
标题说明了一切...我想知道为什么当我通过例如创建 NavigableSet 的子集时headSet(E toElement),我得到一个 SortedSet,并以 boolean Include 作
我正在寻找与 ConcurrentSkipListSet 完全相同的特定数据结构但没有线性 size - 操作,对于较大的集合可能会经常调用。 我知道 Collections.synchronized
如何使用tailSet()和headSet()对于NavigableSet ?并且还实现自己的规则,哪些元素有资格获得尾部或耳机? 喜欢: class MyType { String name;
这是代码: Score alpha = new Score(1,91); Score beta = new Score(1,81); Score gamma = new Sco
我有一个 NavigableSet,我想获取它的中间对象。 由于它是一个 NavigableSet,我知道它是已排序的,因此我知道它的中位数要么是中间元素,要么是两个中间元素的算术中间。 因此,我想访
当我使用 NavigableSet 获取 TreeMap 的降序键集时出现以下错误: [ERROR] [workflow] - Line 159: No source code is availabl
这是我的代码: 导入java.util.*; public class AnotherBackedCollectionsTest{ public static void main(String...
keySet() 返回 java.util.Set。为什么不转换为 NavigableSet 抛出 ClassCastException?如果真实对象是具有 java.util.Set 引用的 Tre
为什么NavigableSet JavaDoc如果它只是一个接口(interface),请说明性能指标? 如果理论上接口(interface)不知道其实现的细节,NavigableSet 接口(int
java.util.Collections 有几个 unmodifiable 方法,它们通过将集合包装在禁止突变操作的装饰器中来提供不可修改的 Collection View 。 Java 6 添加了
这似乎是一个奇怪的问题,但我有点困惑:在 Java 中,方法 NavigableSet.tailSet(Object) 应该返回一个 SortedSet,而 tailSet(Object, boole
我有一组对象: NavigableSet set = new TreeSet(); 然后当我在另一个类(class)中这样做时: GroupMesin.JobWithDepartTime a = g
我有一个方法需要 Collection其中Object可以是String或CustomClass 。然后,它获取集合中的每个元素并将其传递给参数为 Object 的方法。像这样: public voi
NavigableSet API docs声明方法 headSet、tailSet(E)、headSet(E) 和 subSet(E, E) 返回一个NavigableSet。 在 Eclipse 中
NavigableSet接口(interface)提供了许多有用的方法,普通的 Set不会(具体来说,我正在考虑像 headSet 和 tailSet 这样的方法)。但是,作为 Set,它不支持重复元
我有一个: String s = "ab" + Character.MAX_VALUE + Character.MAX_VALUE + Character.MAX_VALUE + "cd"; 我们将其
在尝试从集合中检索元素时,我更喜欢使用 pollFirst() 因为它减少了笨重的命题并有助于在检索后删除元素。为了迭代集合,我使用了通用的“for”方法,该方法只允许检索集合的一部分。我做了一些搜索
这个问题已经有答案了: In Java when one interface extends another, why would one redeclare a method in a subint
我是一名优秀的程序员,十分优秀!