爪哇 中的TreeSet
爪哇 树集 具有以下属性:
- 它只能包含唯一元素。
- 默认情况下,它以升序存储对象,
- 它实现了NavigableSet接口,该接口扩展了SortedSet。
- 将对象放入TreeSet时,它必须实现Comparable接口。
让我们借助示例进一步了解它。
例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
包 com . 组织 . Arpit . 爪哇 2blog; 上市 类 国家 实施 可比{ 串 国家的名字; 上市 国家 ( 串 国家的名字) { 超 (); 这个 .国家的名字 = 国家的名字; } @ 覆写 上市 整型 相比于( 目的 arg0) { 国家 国家 =( 国家 ) arg0; 返回 ( 这个 .国家的名字.相比于( 国家 .国家的名字) ) ; } 上市 串 getCountryName() { 返回 国家的名字; } 上市 虚空 setCountryName( 串 国家的名字) { 这个 .国家的名字 = 国家的名字; } } |
2)创建TreeSetMain.java如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
包 com . 组织 . Arpit . 爪哇 2blog; 进口 爪哇 . 实用程序 .迭代器; 进口 爪哇 . 实用程序 . 树集 ; 上市 类 树集 Main { / ** * @作者Arpit Mandliya */ 上市 静态的 虚空 主要 ( 串 [] args ) { 国家 印度国家= 新 国家 ( “印度” ); 国家 中国国家= 新 国家 ( “中国” ); 国家 尼泊尔国家= 新 国家 ( “尼泊尔” ); 国家 不丹国家= 新 国家 (“不丹”); 国家 印度国家2= 新 国家 ( “印度” ); 国家 尼泊尔国家2= 新 国家 ( “尼泊尔” ); 树集 国家 树集 = 新 树集 (); 国家 树集 . 加 (印度国家); 国家 树集 . 加 (中国国家); 国家 树集 . 加 (尼泊尔国家); 国家 树集 . 加 (不丹国家); 国家 树集 . 加 (印度国家2); 国家 树集 . 加 (尼泊尔国家2); 迭代器 律师 = 国家 树集 .迭代器(); //在此处放置调试点 而 ( 律师 . hasNext ()) { 系统 . 出 . 打印 ( 律师 . 下一个 ().国家的名字); } } } |
当您运行上面的程序时,您将得到以下结果:
1 2 3 4 5 6 |
不丹 中国 印度 尼泊尔 |
将indiaCountry2放入treeSet时,它将将此对象与indiaCountry进行比较,如indiaCountry2.compareTo(indiaCountry),compareTo方法将返回0。两个对象将被视为相等。由于您无法在TreeSet中添加重复元素,因此indiaCountry2将不会添加到上述TreeSet中。
现在将调试点放在第27行,然后右键单击项目->debug as-> 爪哇 应用程序。程序将在第27行停止执行,然后右键单击countryTreeSet然后选择watch。您将能够看到如下结构。
关于TreeSet的棘手问题:
猜测以下程序的输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
包 com . 组织 . Arpit . 爪哇 2blog; 进口 爪哇 . 实用程序 .迭代器; 进口 爪哇 . 实用程序 . 树集 ; 上市 类 雇员 实施 可比 { 上市 串 名称 ; 上市 整型 相比于( 目的 o) { 返回 0; } 上市 静态的 虚空 主要 ( 串 args []) { 雇员 员工一 = 新 雇员 (); 雇员 员工二 = 新 雇员 (); 员工一. 名称 = "约翰"; 员工二. 名称 = “马丁” ; 树集 employeeSet = 新 树集 (); employeeSet. 加 (员工一); employeeSet. 加 (员工二); 迭代器 empIt =employeeSet.迭代器(); 而 ( empIt . hasNext ()) { 系统 . 出 . 打印 ( empIt . 下一个 (). 名称 ); } } } |
上面程序的输出是什么:
马丁
B. 约翰
C. 约翰
马丁
D.编译失败。
E. The 码 runs with no 出 put.
F.在运行时引发异常。
正确答案是B。
说明:
将执行以下步骤:
- 第一个元素“John”将被添加到employeeSet中。
- 当我们在马丁中添加第二个元素时,compareTo方法将被employeeOne.compareTo(employeeTwo)调用,并将返回0。
- 由于compareTo方法返回0,employeeOne等于employeeTwo,因此employeeTwo将不会添加到treeSet中。
- 所以上面程序的输出是“John”