Java—可以有多少个对象?
因此,我有一个链表,其中包含用户对象: (USLinkedList是我创建的链表数据结构的名称) (Users是我创建的一个类)Java—可以有多少个对象?,java,arrays,object,generics,linked-list,Java,Arrays,Object,Generics,Linked List,因此,我有一个链表,其中包含用户对象: (USLinkedList是我创建的链表数据结构的名称) (Users是我创建的一个类) 私有USLinkedList用户; 我想要一个数组来保存这些链表的对象: private USLinkedList<User> dates[]; private USLinkedList日期[]; 我想要另一个数组来保存上述数组的对象: private USLinkedList<User> dates[] mont
私有USLinkedList用户;
我想要一个数组来保存这些链表的对象:
private USLinkedList<User> dates[];
private USLinkedList日期[];
我想要另一个数组来保存上述数组的对象:
private USLinkedList<User> dates[] months[];
private USLinkedList日期[]个月[];
最后,我希望将此数组放入链接列表中:
private USLinkedList<USLinkedList<User> dates[] months[]> years;
private USLinkedList年份;
我想知道:
- 这样的事情是否可能发生
- 如果可能,我的语法是否正确,即我的代码是否正确
- 这样做是一种好的编程实践吗
私有USLinkedList日期[]个月[];
私人美国LinkedList年代码>
这两种情况下的语法都是不正确的,即使是,这也只是令人困惑
Java是一种oop语言,oop被用来让我们人类的事情变得更简单
我认为正确的方法是创建一个对象Dates,它保存私有的USLinkedList日期[]代码>
然后创建一个MonthDates对象,它保存私有的USLinkedList month代码>
然后创建另一个FullDates对象,该对象包含私有的USLinkedList FullDates代码>
我知道这意味着你应该创建3个新对象,但这样做更简单、更容易理解,而且语法正确”_(ツ)_/“是的,不,也许,按那个顺序
你能做到吗?你可以收集你需要的任何深度的集合
语法正确吗?语法与您描述的不一样。这会导致“良好实践”讨论,但混合使用列表和数组似乎是任意的,可能会导致语法混乱。当然,您的访问模式可能会证明将某些级别组织为链表,而将其他级别组织为数组是合理的,但这两个级别都有List
实现,我建议使用它们以保持一致性我展示的示例将是正确的语法
这是好的做法吗?这有几个方面
数据结构本身?如果您需要以这种方式组织数据结构,那么这就是您所需要的。如果简单的方法直观地满足要求,那么这是一种不好的做法;但是如果这是一种简单、直观的方法来做您需要做的事情,那么就可以了
USLinkedList
实现对我来说是一个问号。也许它做了一些提供的列表实现无法做的事情;但是如果是这样,从您所说的话就不明显了。如果java.util.LinkedList
可以工作,那么使用它将是一个比重新发明轮子更好的实践。即使您没有无论出于何种原因,您都需要自己的USLinkedList
,如果可能的话,它应该实现列表
接口,最好参考文件将其作为列表
来处理
如上所述,如果没有很好的理由,我不会混合使用数组和列表。LinkedList
和ArrayList
(或Vector
,取决于同步需要)应该可以正常工作,并允许您一致地使用List
界面
回到语法上来…:
我建议使用接口类型作为引用,我建议使用泛型
private List<User> users;
然后
私人列表月份;
月份=新的ArrayList();
//等等。
及
私有列表年份;
//你明白了吧?
但是,所有这些都假设这种多级索引有一个坚实的理由。你可以,如果这真的是做你需要的事情的简单方法,那很好……但是我不得不说我记不起我上次什么时候需要这种嵌套结构了。拥有复杂的数组结构通常是你想要封装的一个好迹象在一个对象中删除某个对象,并只拥有该对象的列表。这是一个公平的观点,我将尝试类似的方法。您的语法不正确。USLinkedList dates[]months[]
和USLinkedList
没有向您抛出编译器错误?正确的语法是什么?我想大多数人——包括我自己在内——都会认为,如果存在只包含一个列表(毕竟,列表本身已经是一个对象)的对象,那么这些额外的对象就不那么简单了是的,有些人会不同意,当然,我只是把每个列表作为一个对象作为例子。另外,private-USLinkedList-month;
现在是一个对象,如果您希望覆盖排序方法或类似的东西,可以帮到您。我希望我试图表达的观点是清楚的……谢谢您,我认为这是最好的回答!关键是我们必须创建自己的数据结构,所以我们不能使用任何java现有的数据结构。但我想我会创建更多的对象,并将这些对象存储在最终的链表中。不要使用java.util.Vector
,它已经过时了将近19年。@LewBloch-有趣的是,JavaDoc没有说它是d事实上,在Java 1.2(19年前)中,他们专门在Collections API中添加了Vector。而且更晚的时候,他们还添加了通用支持。这似乎不像你所做的那样表明某些东西被认为是过时的。你有一个源代码(即比JavaDoc更权威的源代码)吗,或者这仅仅是你的观点?@MarkAdelsberger Vector的同步是在每元素级别上进行的,因此几乎没有任何用处。它可能不会被弃用,因为有太多早期的API依赖于它。至于源代码,快速搜索便会出现并显示。
private List<User> users;
users = new LinkedList<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?