首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >headSet()/tailSet()在处理降序集时发出

headSet()/tailSet()在处理降序集时发出
EN

Stack Overflow用户
提问于 2011-10-22 12:54:22
回答 2查看 286关注 0票数 1

我有以下代码片段:

代码语言:javascript
复制
class Cert {
public static void main(String[] args) throws IOException {
    NavigableSet<Integer> navigableSet = new TreeSet<Integer>();
    List a = new ArrayList<Integer>();
    a.add(1);
    a.add(2);
    a.add(-1);
    navigableSet.addAll(a);
    Iterator< Integer> iterator = navigableSet.descendingSet().headSet(1).iterator();
    while (iterator.hasNext())
    {
        System.out.print(iterator.next() + " ");
    }
}

}

此代码返回"2“。但是headSet的官方javadoc (Java6)是这样说的:

SortedSet headSet(E toElement)返回该集合中元素严格小于toElement的部分的视图。返回的集合由这个集合支持,所以返回集中的变化反映在这个集合中,反之亦然。返回的集支持此集支持的所有可选集操作。

根据以上所述,程序只需打印"-1“。javadoc忘记了下降的情况吗?

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-22 13:00:22

如果您引用的javadoc片段引用的是泛型比较,而不是显式地说得更少,那么它会更精确。在descendingSet()的文档中描述了这个案例:

返回的集合具有等价于Collections.reverseOrder(comparator()).的排序

票数 2
EN

Stack Overflow用户

发布于 2011-10-22 12:59:07

这一切都是正确的。navigableSet的元素按asc顺序:-1,1,2。navigableSet.descendingSet()的元素以相反的顺序排列: 2,1,-1。headSet(1)将集合的头部(集合的左边部分)切割到元素1,因此返回2。

因为您已经使用了descendingSet,所以升序/降序的概念被改为相反的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7859668

复制
相关文章

相似问题

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