ArrayList
到特定索引?import java.util.Collection;
public class RaArrayList implements RaCollection {
public static ArrayList<Object> obj = new ArrayList<Object>();
public boolean add(int index, Object o) {
for (index = 0; index < obj.size(); index ++) {
o = obj.get(index);
o = new Object();
if (obj.add(index, o)) {
return true;
}
}
return false;
}
}
我的main()
public static void main(String[] args) {
Islam s = new Islam();
System.out.println(s.add(1, "Islam"));
}
答案 0 :(得分:0)
我认为你的问题在这里: o = obj.get(index); o = new Object(); 您将obj分配给您的“o”。然后你将空obj分配给“o”。
答案 1 :(得分:0)
您的代码存在一些问题:
if (obj.add(index, o)) {
。在我的Eclipse中,我得到“类型不匹配:无法从void转换为boolean”。这是因为,即使one-arg add()
返回一个布尔值(总是如此),你正在使用的两个arg add()
被声明为void,因此无法返回任何内容。因此,您不能将其用作if
语句中的条件。那你怎么知道插入是否成功?简单:从没有抛出异常的事实(如果提供无效索引,该方法将抛出IndexOutOfBoundsException
)。因此,只需调用该方法,然后无条件地从您自己的方法返回true
。要在失败时返回false,请使用obj.add()
- try
将来电置于catch
,并在catch
部分中返回false。obj.get(index)
也可能会抛出IndexOutOfBoundsException
。幸运的是,您不需要它,只需删除该行。index
和o
。相反,您正在尝试从0(包括)到列表大小(不包括)的所有索引。对于每个这样的索引,您创建一个新对象而不是使用提供给您的对象,就像我假设您有意。解决方案:删除for循环并删除分配给o
的两个语句。for
循环运行0次,即根本不运行。因此,您的方法会立即转到最后一行并返回false
,而不会向ArrayList
添加任何内容。删除循环和if
语句后,return false;
将无法访问,也应删除。RaArrayList
,但在main
方法中,您实例化的是一个名为Islam
的类。我想应该是同一个班级。