好的,这是我的问题。我正在学习使用泛型类和方法。我想创建一个通用数组列表和方法,通过选择索引添加/删除元素。我根本不知道该怎么做。我的例子是调用IndexOutOfBoundsException。
欢迎任何帮助。 谢谢它提前。
类klasa3:
public class klasa3<E> {
private java.util.ArrayList<E> list = new java.util.ArrayList<>();
public klasa3(int initSize){
}
public int getSize() {
return list.size();
}
public E peek() {
return list.get(getSize() - 1);
}
public void push(E o,int indeks) {
o = list.get(indeks);
list.add(o);
}
public E pop(int indeks) {
E o = list.get(indeks);
list.remove(indeks);
return o;
}
public boolean isEmpty() {
return list.isEmpty();
}
@Override
public String toString() {
return "stack: " + list.toString();
}
}
主要课程:
public class klasa2 {
public static void main(String[] args ) {
klasa3 stak2 = new klasa3(13);
stak2.push("cola",2); // problem here
stak2.pop(2);
System.out.println(stak2.getSize());
}
}
答案 0 :(得分:2)
您正在创建一个空的didFinishLaunchingWithOptions
,然后尝试在ArrayList
方法中从中获取第三个元素(索引为2的元素)。那不行。
现在,您当前忽略了构造函数中的push
参数。您可能需要以下内容:
initSize
或提供默认元素:
// TODO: Rename the class to follow naming conventions
public klasa3(int initSize) {
for (int i = 0; i < initSize; i++) {
list.add(null);
}
}
答案 1 :(得分:0)
这就是发生的事情:
在main
方法中,您首先要创建一个新的klasa3
对象。然后你打电话给push("cola", 2)
。
push
方法执行:o = list.get(indeks)
,其中indeks
为2
。此时列表为空,因此2
不是有效索引,导致IndexOutOfBoundsException
。
传递给get
方法的索引必须介于0(含)和列表大小(不包括)之间。由于大小为0
,因此索引2
无效。