首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在查找headSet时在SortedSet中添加空字符"\0“?

为什么在查找headSet时在SortedSet中添加空字符"\0“?
EN

Stack Overflow用户
提问于 2017-01-29 22:58:11
回答 1查看 149关注 0票数 4

这个成语是什么意思?与"\0“连接的java字符串(例如,“日本\0”?如图所示

代码语言:javascript
复制
SortedSet<String> countryHeadSet 
    = countrySet.headSet("Japan\0");

"Japan\0"字符串在调用中意味着什么?如果程序员只写

代码语言:javascript
复制
countryHeadSet 
    = countrySet.headSet("Japan");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-29 23:34:06

我找到了答案。谢谢你所有的想法。

使用字符串+ "\0"的成语之一,特别是当您看到它带有SortedSet的范围视图操作时,就是使用它查找字符串的后继

之所以需要这样的后续操作,是因为这些范围视图操作(subSet()headSet()tailSet())提供了半开放的间隔,而且您可能需要字符串的后续操作来构造封闭的间隔。这在排序集的Java中得到了解释。

有几种方法返回范围受限的子集。这样的范围是半开放的,也就是说,它们包括低端点,但不包括高端点(在适用的情况下)。如果您需要一个封闭范围(包括两个端点),并且元素类型允许计算给定值的后续值,那么只需将子范围从lowEndpoint请求为后继(HighEndpoint)即可。例如,假设s是一组排序的字符串。以下成语获得一个视图,其中包含从低到高、包含的s中的所有字符串: SortedSet sub = s.subSet(low,high+"\0");

换句话说,这两个电话之间的区别如下:

代码语言:javascript
复制
countrySet.headSet("Japan\0");
countrySet.headSet("Japan")

第一个字符串将从集合的开始到包含字符串countrySet (即范围是一个封闭间隔)的范围内得到所有字符串;而第二个字符串将从集合的开始一直到但不包括字符串"Japan" (即范围是半开间隔)。

我正在包括一个我自己的测试程序来演示这个成语的用法:

代码语言:javascript
复制
import java.util.Arrays;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;

public class StringPlusNull {

    public static void main(String[] args) {
        List<String> countryList 
            = Arrays.asList("U.S.", "U.K.", "China", "Japan", "Korea");
        SortedSet<String> countrySet
            = new TreeSet<>(countryList);

        String toElement = "Japan";
        SortedSet<String> countryHeadSet 
            = countrySet.headSet(toElement);
        System.out.format("There are %d countries in the "
                + "(half-open) headset [, %s): %s%n"
                , countryHeadSet.size(), toElement, countryHeadSet);

        toElement = "Japan\0";
        countryHeadSet 
            = countrySet.headSet(toElement);
        System.out.format("There are %d countries in the "
                + "(half-open) headset [, %s): %s%n"
                , countryHeadSet.size(), toElement, countryHeadSet);
    }

}

产出如下:

代码语言:javascript
复制
There are 1 countries in the (half-open) headset [, Japan): [China]
There are 2 countries in the (half-open) headset [, Japan ): [China, Japan]
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41926919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档