[英]Array of Doubly Linked Lists
我想创建一个数组,其中每个元素都是一个双向链表。 这是我到目前为止的内容:
public ArrayOfLists() {
this.limit = limit; //limit of Nodes in each element of listArray
listArray = (DoublyLinkedList<E>[]) new DoublyLinkedList[3];
listArray[0] = new DoublyLinkedList<E>();
listArray[1] = new DoublyLinkedList<E>();
listArray[2] = new DoublyLinkedList<E>();
size = 0;
}
我不确定这在概念上是否正确,但是我将其视为2D数组。 我对如何从存储在此数组中的列表中添加和删除对象感到困惑。 例如,
public void add(E obj) {
//some stuff
}
public void remove(int index) {
//some stuff
}
我可以以某种方式访问我的doublyLinkedList类中已经实现的方法来提供帮助吗? 非常感谢。
我不确定要使用哪种逻辑来确定要将obj
添加到数组的哪个插槽,但这是您的操作方式(当然,在实现了calculateArraySlotSomehow
之后):
public void add(E obj)
{
int index = calculateArraySlotSomehow(obj);
listArray[index].add(obj);
}
根据您的评论,您可以实现calculateArraySlotSomehow
这样的事情:
private int calculateArraySlotSomehow(E obj)
{
// 'count' is the total number of elements that are already
// stored in this data structure
// 'size' is the number of array elements
// 'limit' is the number of elements per list
int slot = count / limit;
if (slot >= size) {
throw new IndexOutOfBoundsException("Index: " + slot + ", Size: " + size);
}
return slot;
}
然后,您必须将add
实现更改为:
public void add(E obj)
{
int index = calculateArraySlotSomehow(obj);
listArray[index].add(obj);
count++;
}
请注意,这不是线程安全的。
我对您实际上要完成的事情感到好奇,因为我感觉到您可能会竭尽全力使事情变得复杂。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.