java - 如何解决这个 Treeset 程序?
问题描述
这是一个java问题。我只想问为什么9也被添加到原始列表中ts
?
class Test {
public static void main(String args[]){
TreeSet<Integer> ts=new TreeSet<Integer>();
ts.add(1);
ts.add(8);
ts.add(6);
ts.add(4);
SortedSet<Integer> ss = ts.subSet(2, 10);
ss.add(9);
System.out.println(ts);
System.out.println(ss);
}
}
请帮忙!
解决方案
正如 Alowaniak 在评论中所说,subset
仅返回原始集的视图,因此更改会反映到两个集。JavaDoc说:
返回的集合由该集合支持,因此返回集合中的更改会反映在该集合中,反之亦然。
例如,您可以基于子集创建一个新集:
Set<Integer> ss = new TreeSet<Integer>(ts.subSet(2, 10));
以防止这种行为。
推荐阅读
- excel - 谷歌表格根据条件获取特定单元格范围的计数和总和
- python - 如何实现模糊粗略最近邻有序加权平均(FRNN-OWA)分类以产生准确度得分和分类报告?
- php - 第三个测试用例 PHP for 循环不增加
- angular - 克隆数据 - 错误错误:InvalidPipeArgument: '[object Object]' for pipe 'AsyncPipe'
- c# - 如何在 ASP.NET Core MVC 中添加分页,在 AJAX 调用中动态创建的表上
- postgresql - 为 node.js 运行 PostgresSQL 时出错
- web-scraping - scrapy css 选择器 - 从子元素中获取文本
- reactjs - 反应查询开发工具问题
- r - 如何解决二进制运算的错误非数字参数
- angular - Angular - ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改