QUESTION 4Given:
12. import java.util.*;
13. public class Explorer2 {
14. public static void main(String[] args) {
15. TreeSet<Integer> s = new TreeSet<Integer>();
16. TreeSet<Integer> subs = new TreeSet<Integer>();
17. for(int i = 606; i < 613; i++)
18. if(i%2 == 0) s.add(i);
19. subs = (TreeSet)s.subSet(608, true, 611, true);
20. s.add(629);
21. System.out.println(s + " " + subs);
22. }
23. }
What is the result?
A. Compilation fails.
B. An exception is thrown at runtime.
C. [608, 610, 612, 629] [608, 610]
D. [608, 610, 612, 629] [608, 610, 629]
E. [606, 608, 610, 612, 629] [608, 610]
F. [606, 608, 610, 612, 629] [608, 610, 629]
Answer: E

本题主要考查:

1、TreeSet 自然排序

2、subSet()方法的运用

先来看下subSet():

NavigableSet<Integer> java.util.TreeSet.subSet(Integer fromElement, boolean fromInclusive, Integer toElement, boolean toInclusive)Returns a view of the portion of this set whose elements range from fromElement to toElement.
The returned set is backed by this set, so changes in the returned set are reflected in this set,and vice-versa. The returned set supports all optional set operations that this set supports.
The returned set will throw an IllegalArgumentException on an attempt to insert an element outside its range.

返回一个视图的一部分从fromElement到toElement这个集合的元素。如果fromElement 和toElement是相等的,返回的集合是空的,除非fromInclusive和toInclusive都是true。返回的集合是由这个集合backed的,所以返回的变化反映在这个集合,反之亦然。返回的集合支持支持原集合所有可选的设置操作。

返回的集合将抛出IllegalArgumentException,当试图插入一个元素以外的范围。

理论说完了,现在实践一下。

先把题目回顾一遍,有两个TreeSet集合s 和 subs,s里边有[606, 608, 610, 612],subs 是用 subSet()得来的,[608, 610];然后再向 s 中添加一个629,因不是往subs中添加,故不会报IllegalArgumentException。最终 s 就是 [608, 610, 612, 629], subs就是 [608, 610]。

下面我们稍稍修改下,

因为都是true,所以subs中608和610都有。

再改下。

这个就是If fromElement and toElement are equal, the returned set is empty unlessfromInclusive andtoInclusive are both true.

再改下:

这个就像映射一样,反之亦然,下图也是这个原理。

下边这个直接向subs中添加超出了它范围的数字,报IllegalArgumentException异常。原题目是向 s 中添加是没有问题的。

TreeSet 题的更多相关文章

  1. Leetcode分类刷题答案&心得

    Array 448.找出数组中所有消失的数 要求:整型数组取值为 1 ≤ a[i] ≤ n,n是数组大小,一些元素重复出现,找出[1,n]中没出现的数,实现时时间复杂度为O(n),并不占额外空间 思路 ...

  2. 【Java每日一题】20161108

    package Nov2016; import java.util.TreeSet; public class Ques1108 { public static void main(String[] ...

  3. 【Java每日一题】20161031

    package Oct2016; import java.util.SortedSet; import java.util.TreeSet; public class Ques1031 { publi ...

  4. Java容器题库

    一.    填空题 Java集合框架提供了一套性能优良.使用方便的接口和类,包括Collection和Map两大类,它们都位于  java.util  包中 队列和堆栈有些相似,不同之处在于栈是先进后 ...

  5. Java IO流题库

    一.    填空题 Java IO流可以分为   节点流   和处理流两大类,其中前者处于IO操作的第一线,所有操作必须通过他们进行. 输入流的唯一目的是提供通往数据的通道,程序可以通过这个通道读取数 ...

  6. OCJP(1Z0-851) 模拟题分析(一)11

    Exam : 1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam 以下分析全都是我自己分析或者参考网上的,定有 ...

  7. P264练习题1.2题

    package 集合; import java.util.*; public class fourteen { public static void main(String[] args) { //1 ...

  8. java面试基础题(三)

    程序员面试之九阴真经 谈谈final, finally, finalize的区别: final:::修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此 ...

  9. JAVA基础50题

    package package0530; import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;imp ...

随机推荐

  1. java实现多线程的4种方式

    1.继承Thread类 看jdk源码可以发现,Thread类其实是实现了Runnable接口的一个实例,继承Thread类后需要重写run方法并通过start方法启动线程. 继承Thread类耦合性太 ...

  2. Python练习 | Web本质Socket

    #--------------------------------客户端-------------------------------------- # 导入socket库 import socket ...

  3. Oracle 通过数据字典查询系统信息

    简介:数据字典记录了数据库系统的信息,他是只读表和视图的集合,数据字典的所有者是sys用户.注:用户只能在数据字典上执行查询操作,而维护和修改是由系统自己完成的. 1.数据字典的组成:数据字典包括数据 ...

  4. 我的Python升级打怪之路【三】:Python函数

    函数 在函数之前,我们一直遵循者:面向过程编程,即:根据业务逻辑从上到下实现功能,开发过程中最常见的就是粘贴复制.代码就没有重复利用率. 例如:有好多的重复的代码 if 条件: 发送指令 接收结果 e ...

  5. An internal error occurred during: "Initializing Java Tooling". Eclipse启动发生的错误

    An internal error occurred during: “Initializing Java Tooling” 错误经常是莫名其妙的出现这种总错误,解决办法: 1.eclipse -&g ...

  6. windows下安装node环境,以及grunt试水笔记

    grunt,当下前端界知名度最高的工作流处理工具. 在一线的互联网公司,它早已经被用烂了,而我真正接触,是在去年年底... 期间还因为内心太杂分心玩乐而荒废学途,以致到最近才重拾学业,在这里BS一下自 ...

  7. 用eclipse查看JDK源代码

    把jdk的源代码导入eclipse

  8. Mybatis缓存(二)

    Mybatis的二级缓存 1.二级缓存的范围  1. 二级缓存是Mapper级别的缓存.  2. 二级缓存的结构也是一个HashMap.  3. 不同的SqlSession对象去操作同一个mapper ...

  9. SSO单点登录的实现原理是怎样的

    单点登录在现在的系统架构中广泛存在,他将多个子系统的认证体系打通,实现了一个入口多处使用,而在架构单点登录时,也会遇到一些小问题,在不同的应用环境中可以采用不同的单点登录实现方案来满足需求.我将以我所 ...

  10. mysql 8 root密码重置

    亲测有效. https://blog.csdn.net/gupao123456/article/details/80766154