如何使用LinkedList for java?

如何使用LinkedList for java?,java,linked-list,Java,Linked List,我需要使用LinkedList添加牢房编号为1.1、1.2、1.3、1.4等的牢房。有两个级别,奇数牢房有1个铺位,偶数牢房有2个铺位。我该怎么做 我这样做是为了创建一个linkedlist。这是在我的Cells类中,我有两个子类,它们继承自Cells类,称为奇数和偶数,用于奇数和偶数编号的单元格。我是将所有单元格放在单元格类中,还是将奇数单元格放在奇数类中,将偶数单元格放在偶数类中 LinkedList<Cells> cellId = new LinkedList<Cells

我需要使用LinkedList添加牢房编号为1.1、1.2、1.3、1.4等的牢房。有两个级别,奇数牢房有1个铺位,偶数牢房有2个铺位。我该怎么做

我这样做是为了创建一个linkedlist。这是在我的Cells类中,我有两个子类,它们继承自Cells类,称为奇数和偶数,用于奇数和偶数编号的单元格。我是将所有单元格放在单元格类中,还是将奇数单元格放在奇数类中,将偶数单元格放在偶数类中

LinkedList<Cells> cellId = new LinkedList<Cells>();
public void add()
{}
LinkedList cellId=new LinkedList();
公共无效添加()
{}

我不确定在add方法中添加什么。

拥有
奇数
偶数
类,这些类都是
单元格
的子类,这听起来很不对。相反,Cell类应该有一个“Number”属性,以及类似于
isOdd()
和/或
isEven()
的方法


无论如何,我认为所有的单元格都应该在一个链表中

您可以随心所欲,只需将单元格添加到列表中即可(无需扩展列表)。比如:

public class Cell {
    // all the internal logic
}
public class EvenCell extends Cell {}
public class OddCell extends Cell {}

LinkedList<Cell> cells = new LinkedList<Cell>();
cells.add(new OddCell());
cells.add(new EvenCell());
// ...

根据我上面的评论,下面是一个使用数组实现的示例,假设您已经在主类中定义了常量级别和每个级别的单元格(即使用“private static final”):

当然,数组实际上是从零开始编号的,但是因为单元格是从一开始编号的,所以忽略这些元素是最简单的。单元格[0]保留为空,因为没有“0级”。同样,单元格[1][0]可以保留为空,因为没有单元格1.0

如果单元格的数量不变,则数组是一个不错的选择。另一方面,如果必须动态添加单元格甚至级别,则选择ArrayList。不过,语法并没有那么友好。例如,如果您有一个ArrayList类型的变量单元格,那么要分配给单元格1.5,您必须写入:

cells.get(1).set(5, new OddCell());

无论如何,是否使用数组、ArrayList或其他东西最终取决于您的决定,这取决于整个程序。

我同意,但对于我的赋值,我必须使用继承,这是我唯一能想到的使用它的地方。那么,add()方法应该做什么呢?它在哪一类…监狱。添加()?它应该接受什么作为参数——囚犯、牢房或其他什么?或者它应该不带参数,而是返回对空单元格的引用?一旦你决定了这些问题,写add方法应该会容易得多。@Todd:我想Karen认为她必须扩展LinkedList的add()方法。但我可能错了。另一个问题:作业要求使用LinkedList吗?这似乎是一个相当糟糕的选择,因为链表使得从列表中间添加和删除非常容易,但是从两个奇数单元格之间删除偶数单元格几乎没有任何意义!数组数组(或ArrayList of ArrayList)将使查找单元格变得更加容易:例如,单元格2.5可以被引用为单元格[2][5]。是的,分配需要它,但我已经在其他地方使用过它。那么我应该只使用数组还是arraylist来实现它呢?
Cell[][] cells = new Cell[LEVELS+1][];
for(int level = 1; level <= LEVELS; level++) {
    cells[level] = new Cell[CELLS_PER_LEVEL+1];
}
cells[1][5] = new OddCell();
cells.get(1).set(5, new OddCell());