Java - 你可以拥有多少个对象对象?

时间:2017-02-16 19:32:47

标签: java arrays object generics linked-list

所以我有一个包含User对象的链表:

(USLinkedList是我创建的链表数据结构的名称)

(用户是我创建的课程)

QBrush

我想要一个数组来保存这些链接列表的对象:

      private USLinkedList<User> users;

我想要另一个数组来保存上面数组的对象:

      private USLinkedList<User> dates[];

我最终希望这个数组进入链表:

      private USLinkedList<User> dates[] months[];

我想知道:

  • 如果这样的话甚至可能吗?
  • 如果可能的话,我的语法是否正确,即我的代码是否正确?
  • 做这样的事情是不错的编程习惯?

谢谢你们!

2 个答案:

答案 0 :(得分:0)

private USLinkedList<User> dates[] months[]; private USLinkedList<USLinkedList<User> dates[] months[]> years;

两种情况下的语法都不正确,即使是,这也只是令人困惑。

Java是一种oop语言,oop用于使我们的人类更简单。

我认为正确的方法是创建一个持有private USLinkedList<User> dates[];的对象日期 然后创建一个包含private USLinkedList<Dates> month;

的MonthDates对象

然后创建另一个FullDates对象,其中包含private USLinkedList<MonthDates> fullDates;

我知道这意味着你应该创建3个新对象,但这种方式更简单易懂,语法也正确¯_(ツ)_ /¯

答案 1 :(得分:0)

是的,不,也许,按顺序。

你能做到吗?你可以拥有你需要的深度集合。

语法是否正确?语法与您描述的不同。这会导致“良好实践”讨论,但混合列表和数组似乎是随意的,可能会导致语法混乱。当然,您的访问模式可能有理由将某些级别组织为链接列表而将其他级别组织为数组,但是对于这两种级别都有List个实现,我建议使用它们来保持一致性。因此,我展示的示例将是正确的语法。

这是好的做法吗?这有几个方面。

数据结构本身?好吧,如果您需要以这种方式组织的数据结构,那么这就是您所需要的。如果更简单的东西会直观地满足要求,那么这是不好的做法;但如果这是一种简单,直观的方式来做你需要做的事情,那就没关系了。

USLinkedList实施对我来说有点问题。也许它提供了所提供的List实现无法做到的事情;但如果是这样的话,你所说的并不明显。如果java.util.LinkedList<User>可行,那么使用它将比重新发明轮子更好。即使您出于某种原因确实需要您自己的USLinkedList,如果可能,它应该实现List接口,并且最好将引用作为List来解决。

如上所述,我不会在没有充分理由的情况下混合使用数组和列表。 LinkedListArrayList(或Vector,取决于同步需求)应该可以正常工作,并允许您始终使用List界面。

回到语法......

我建议使用接口类型作为参考,我建议使用泛型。你有

private List<User> users;

可以填充

users = new LinkedList<User>();

(如果您确实需要自定义列表实现,则可以将LinkedList<User>全部替换为USLinkedList<User>。如果它无法实现List接口,那么您也可以替换List<User> {1}}使用`USLilnkedList。)

接下来,

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?

但同样,所有这些都假设这种多级索引有充分的理由。你可以,如果它真的是直接的方式来做你需要的那么好......但我不得不说我不记得我最后需要这样一个嵌套的结构。

相关问题