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在将对象添加到集合之前,让它们引发变量.虽然开发人员应该知道这一点,并且应该照顾它,但仍然有办法迫使它或一些最佳实践.
我的数据模型: -
tid | codes | raw | type
-------------------------------------+--------------+--------------+------
a64fdd60-1bc4-11e5-9b30-3dca08b6a366 | {12, 34, 53} | {sdafb=safd} | cmd
CREATE TABLE MyTable (
tid TIMEUUID,
type TEXT,
codes SET<INT>,
raw TEXT,
PRIMARY KEY (tid)
);
CREATE INDEX ON myTable (codes);
Run Code Online (Sandbox Code Playgroud)
如何查询表以基于多个设置值返回行.
这有效: -
select * from logData where codes contains 34;
Run Code Online (Sandbox Code Playgroud)
但是我希望根据多个设置值获取行,但这些都不起作用: -
select * from logData where codes contains 34, 12; or
select * from logData where codes contains 34 and 12; or
select * from logData where codes …Run Code Online (Sandbox Code Playgroud)