执行list.set(1000,somevalue)时是否增加arraylist?

jk9hmnmh  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(222)

在执行like时是否为1000个值分配空间 l1.add(1000, "someText1") ? 或者jvm以某种方式优化空间(我不知道这是否可能)以使其更紧凑?

import java.util.ArrayList;
import java.util.List;

class Test
{
    public static void main(String[] args)
    {
        List l1 = new ArrayList<String>(10);
        l1.add(1000, "someText1"); // do I increased arrayList to 50 values&?

        List l2 = new ArrayList<String>(10);
        l2.set(1000, "someText2"); // do I increased arrayList to 50 values&?
    }
}
kd3sttzy

kd3sttzy1#

你不是在增加 List ,并且您没有为 1000 价值观。你造成了一场灾难 IndexOutOfBoundsException 被扔掉,因为 1000 是对的无效索引 set (或 add )空的元素 List .
两种方法的javadoc都提到了这一点:
void add(int索引,e元素)
indexoutofboundsexception-如果索引超出范围(index<0 | | index>size())
e集(int索引,e元素)
indexoutofboundsexception-如果索引超出范围(index<0 | | index>=size()) add(int index, E element) 只能在现有元素之后立即添加元素。因此 index 必须<=文件的原始大小 List . set(int index, E element) 只能替换 List . 因此 index 必须小于 List .

相关问题