当我做
ArrayList<Integer> arr = new ArrayList<Integer>(10);
arr.set(0, 1);
Java给了我
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.set(Unknown Source)
at HelloWorld.main(HelloWorld.java:13)
有没有一种简单的方法可以预先保留ArrayList的大小,然后像数组一样立即使用索引?
这是来源ArrayList
:
构造函数:
public ArrayList(int initialCapacity)
{
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity);
this.elementData = new Object[initialCapacity];
}
您致电set(int, E)
:
public E set(int index, E element)
{
rangeCheck(index);
E oldValue = elementData(index);
elementData[index] = element;
return oldValue;
}
Set
电话rangeCheck(int)
:
private void rangeCheck(int index)
{
if (index >= size) {
throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}
}
它可能很微妙,但是当您调用构造函数时,尽管初始化了an
Object[]
,但您并未初始化size
。因此,从中rangeCheck
,您会得到IndexOutOfBoundsException
,因为它size
是0。因此set(int, E)
,您可以使用add(E e)
(在您的情况下,将e
类型添加E
到列表的末尾)来代替使用,add(1)
而这不会发生。或者,如果适合您,则可以按照另一个答案中的建议将所有元素初始化为0。
null 我也尝试了一些反匹配,但它不仅不起作用,它也感觉非常非常脏(整个项目可能不是最优的,所以这是说了很多)。 注意:您可以在评论中建议实现这一点的更好方法。请记住,虽然我总是开放的改进建议,这不是我的问题。
当你首次建立一个应用的时候,为你的数据库预先安装一些硬编码的数据,是很有用处的。 有几种方法可以让Django自动创建这些数据:你可以通过fixtures提供初始数据,或者提供一个包含初始数据的sql文件。 通常来讲,使用fixtrue更加简洁,因为它是数据库无关的,而使用sql初始化更加灵活。 提供初始数据的fixtures fixture是数据的集合,让Django了解如何导入到数据库中。创建
我感兴趣的是另一个。它是一个代理,将所有调用重定向到第一个调用。因此,当我调用http://localhost:8080/foo时,我的代理服务器将依次调用http://localhost:8090/foo。如果第一个服务器返回,代理将返回。 我设法用一些可能不优雅但功能正常的代码来达到这一点,下面我给出了摘录。这里的关键是我使用来实现这一点。下一步是设计一个界面,将使我的附加信息立即清晰,这基本
我想使用nss作为pkcs11的提供者,我正在oracle JRE和ubuntu 64位上用java编码。我尝试了两种不同的包装,iaik和SunPKCS11,但在这两种包装中我遇到了相同的问题。对于我的提供者,我首先尝试使用libnss3。所以每次我在实例模块中得到IOException。然后我使用libsoftokn3。因此,我成功地实例化了一个模块。但现在我在初始化时遇到了这个异常:“CKR
我正在尝试使用Firebase存储下载图像。我编写了以下代码 MainActivity.java 我在这个论坛上搜索,但没有得到什么是确切的问题。请帮忙。日志行:
我想为文本字段提供一个初始值,并用空值重新绘制它以清除文本。使用Flutter的API执行此操作的最佳方法是什么?