是的,不,也许,按顺序。
你能做到吗?您可以拥有任意深度的藏品集合。
语法正确吗?语法不像您描述的那样。这会渗入到“良好实践”的讨论中,但混合列表和数组似乎是任意的,并可能导致混淆语法。当然,您的访问模式可能有理由将某些级别组织为链接列表,其他级别组合为数组,但这两者都有List
实现,我建议使用它们以保持一致性。所以我展示的例子将是正确的语法。
这是很好的做法吗?这有几个方面。
数据结构本身?那么,如果你需要以这种方式组织的数据结构,那么这就是你需要的。如果更简单的事情可以直观地满足要求,那么这是不好的做法。但如果这是做你需要做的简单而直观的方法,那就没问题。
USLinkedList
实现对我来说是一个问号。也许它提供了List实现不能做的事情;但如果是这样,从你所说的话不是很明显。如果java.util.LinkedList<User>
可以工作,那么使用它将比重新发明轮子更好。即使你确实需要你自己的USLinkedList
,如果可能的话,它应该实现List
接口,最好引用应该将它作为List
。
如上所述,如果没有很好的理由,我不会混合使用数组和列表。 LinkedList
和ArrayList
(或Vector
,取决于同步需求)应该正常工作,并允许您始终使用List
接口。
所以回到语法...:
我建议使用的接口类型为引用我建议使用泛型。所以,你必须
private List<User> users;
,你可以用
users = new LinkedList<User>();
填充(如果你确实需要自定义列表实现,可以取代LinkedList<User>
与USLinkedList<User>
贯穿始终。如果它无法实现List
接口,那么你也可以用`USLilnkedList取代List<User>
)
接下来的线,
private List<List<User>> dates;
dates = new ArrayList<List<User>>();
dates.add(new LinkeList<User>()); // or whatever...
然后
private List<List<List<User>>> months;
months = new ArrayList<List<List<User>>>();
//etc.
和
private List<List<List<List<User>>>> years;
// well, you get the idea, right?
但同样,这一切都假定有一个为这种多层次索引一个坚实的理由。你可以,如果它真的是直接的方式来做你需要的东西,那很好......但我不得不说,我不记得我最后需要这样一个嵌套结构。
具有复杂的数组结构通常是一个好兆头,您想要在对象中封装某些东西,并只包含该对象的列表。 – David
这是一个公平点,我会尝试这样的事情。 – Physco111
您的语法不正确。 'USLinkedList dates [] months [];''和'USLinkedList dates [] months []>'没有向您抛出编译器错误? –