首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Treeset的工作

Treeset的工作
EN

Stack Overflow用户
提问于 2011-12-08 13:54:48
回答 4查看 3.5K关注 0票数 3
代码语言:javascript
复制
import java.util.*;
public class Explorer1 
{
    public static void main(String[] args) 
    {
        TreeSet<Integer> s = new TreeSet<Integer>();
        TreeSet<Integer> subs = new TreeSet<Integer>();
        for(int i = 606; i < 613; i++)  if(i%2 == 0) s.add(i);
        subs = (TreeSet)s.subSet(608, true, 611, true);
        s.add(609);
        System.out.println(s + " " + subs);
    }
}

O/P: 606,608,609,610,612

可以解释为什么609被添加到subs,因为它是在分配给object之后添加的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-08 14:00:43

javadocs for TreeSet说:

返回该集合中元素范围从fromElement到toElement的部分的视图。如果fromElement和toElement相等,则返回的集合为空,除非fromExclusive和toExclusive都为真。此集合支持返回的集合,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持此集合支持的所有可选集合操作。

(已添加强调)

因此,609被添加到subs,因为它被添加到由subs支持的s中。

票数 1
EN

Stack Overflow用户

发布于 2011-12-08 14:00:15

从TreeSet的JavaDoc ...

返回该集合中元素范围从fromElement到toElement的部分的视图。如果fromElement和toElement相等,则返回的集合为空,除非fromExclusive和toExclusive都为真。返回的集合由该集合支持,因此返回的集合中的更改将反映在该集合中,反之亦然。返回的set支持此set支持的所有可选set操作。

因此,当您执行s.subSet()时,您实际上只是看到了s的视图,而不是一个全新的TreeSet。对集合s所做的任何更改都会反映在子集视图中。

票数 3
EN

Stack Overflow用户

发布于 2011-12-08 13:58:50

子集只是返回原始集合的视图,由于集合是按排序的,因此添加的609符合您给定的范围。

Read more about it here.

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

https://stackoverflow.com/questions/8426790

复制
相关文章

相似问题

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