And*_*aKo 4 java arrays dynamic realloc
是的,这是一个家庭作业问题,所以请给我一个很好的解释!:)
无论如何,这就是我需要做的事情:
我需要有一个类,它将在其属性中包含另一个类的对象数组.在我看来,这样做的正确方法是使用LinkedList,Vector或类似的东西.不幸的是,上次我这样做的时候,我从教授那里得到了火和硫磺,因为根据他的信念,我使用的是先进的东西,却没有理解基础知识.
现在,下一个明显的解决方案是创建具有固定数量元素的数组,并添加检查以获取和设置,这将查看数组是否已满.如果它已满,它们将创建新的更大的数组,将旧数组的数据复制到新数组并将新数组返回给调用者.如果它基本上是空的,它们会创建新的较小数组并将数据从旧数组移动到新数组.对我来说,这看起来有点愚蠢.对于我的作业,阵列中可能不会有更多的3个元素,但我想制作一个可扩展的解决方案,而无需手动计算有关阵列填充频率的统计数据,添加的新元素的平均数量是多少,然后使用计算结果计算新数组中的元素数量等.
顺便说一句,没有必要从数组的中间删除元素.
有小费吗?
class test {
private Object[] objects;
private int size;
public test() {
objects = new Object[10];
size = 0;
}
public void push(Object o) {
if (objects.length == size) {
throw new RuntimeException("This wouldn't happen if I didn't have to reinvent the wheel");
}
objects[size] = o;
size++;
}
public Object pop() {
size--;
Object o = objects[size];
objects[size] = null;
return o;
}
}
Run Code Online (Sandbox Code Playgroud)
开玩笑.我认为你最好的办法是实现自己的链表,然后在课堂上使用它.就像是:
class Element {
Object val;
Element next;
Element prev;
public Element(Object val, Element next, Element prev) {
this.val = val;
this.next = next;
this.prev = prev;
}
}
class LinkedList {
Element head;
Element tail;
public void add(Object o) {
Element el = new Element(o, null, tail);
tail.next = el;
}
public Object remove() {
Element o = tail;
tail = o.prev;
tail.next = null;
return o.val;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17044 次 |
| 最近记录: |