JavaScript 风格的数组填充在 Java 中



在JavaScript中,以下内容:

var a = [];
a[20] = "hello";
console.log(JSON.stringify(a));

将产生:

[null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,"hello"]

Java 中是否有一种列表类型在设置超出其当前边界的值时会自动扩展?地图不实用,因为我还需要知道数组尺寸。

在标准的JDK中没有这样的类。

最好的办法可能是围绕 ArrayList 创建一个包装器并提供 set(int index,Object value) 等方法

它的实现如下所示:

public void set(int index,Object value) {
   while (list.size() <= index) {
       list.add(null); // filling the gaps
   }   
   list.set(index,value); 
}

标准JDK中没有提供这样的实现,但您可以使用GrowthList(来自Apache Commons Collections)。

List<String> list = new GrowthList<>(); //[]
list.add(5, "test"); //[null, null, null, null, null, test]

您可以使用 Arrays.fill.看看这个响应。

最新更新