如果树集对象改变其值(树集的最佳实践?)会怎样?

leo*_*ame 2 java treeset

List list = new ArrayList();
MyObj mine = new MyObj();
list.add(mine); 
Run Code Online (Sandbox Code Playgroud)

我喜欢在操作对象之前将对象添加到列表中,这样我以后就不会忘记添加它,可能是我在疯狂的浓缩逻辑中工作,我喜欢这样的方式

mine.setXXX(stuff);
Run Code Online (Sandbox Code Playgroud)

这是我一直用来在列表中添加对象的方式,

刚才我有一个TreeSet更有意义的用例,所以我自然想做这样的事情: -

Set set = new TreeSet();
MyObj mine = new MyObj();
set.add(mine);
mine.setXXX(stuff); // add setters here
Run Code Online (Sandbox Code Playgroud)

但是这里的问题是在将对象添加到列表之前Treeset需要在compareTo方法中使用变量进行初始化.

好的,我可以照顾它.

但我的担忧和问题是: - 有没有办法可以强制开发人员可能正在使用我的模型,而我以前Treeset不会重复我的错误.即myObject在将对象添加到集合之前,让它们引发变量.虽然开发人员应该知道这一点,并且应该照顾它,但仍然有办法迫使它或一些最佳实践.

Jef*_*rey 5

不,没有通用的方法来强制执行此操作.执行此操作的最佳方法是将不可变对象放入仅无法修改的集合中.而不是setXXX在您的对象上有一个方法,使其可以通过构造函数进行配置,而不是可编辑的.