首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java ArrayList添加超出当前大小的项

Java ArrayList添加超出当前大小的项
EN

Stack Overflow用户
提问于 2012-01-19 19:18:22
回答 10查看 6.1K关注 0票数 7

想知道是否有一种有效的方法可以将项目添加到比当前大小更大的位置上的ArrayList中:

场景:

代码语言:javascript
运行
复制
   ArrayList<Item> items = new ArrayList<Item>;
   ... let's say I add three elements

现在我想在位置10添加一个项目(将3到10的项目保留为空)

代码语言:javascript
运行
复制
  items.add(10,newItem);  // item.size() == 3 

有没有一种有效的方法来调整ArrayList的大小/填充空值?

Java的实现将size字段设置为私有:-(..

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2012-01-19 19:31:41

我所能做的最好的事情就是items.addAll(Collections.nCopies(6, null)),并希望ArrayList实现一些行为来在内部加速这一过程

票数 6
EN

Stack Overflow用户

发布于 2012-01-19 19:39:18

这个怎么样?

代码语言:javascript
运行
复制
ArrayList<Item> items = new ArrayList<Item>();

items.add(new Item(0));
items.add(new Item(1));
items.add(new Item(2));

items.addAll(Collections.<Item>nCopies(7, null));
items.add(10,new Item(10));

System.out.println(items);

打印

代码语言:javascript
运行
复制
[0, 1, 2, null, null, null, null, null, null, null, 10]
票数 2
EN

Stack Overflow用户

发布于 2019-05-21 00:09:07

这是一个较老的问题,但您现在可以使用SparseArray作为ArrayList的(几乎)直接替代。它允许不连续的整数键值,如果没有为键设置值,则返回null。在性能方面,它正是为满足您的需求而设计的。您可以使用append而不是add,它更具描述性,因为无论最大键是什么,您都会将其附加到末尾,即使有间隙也是如此。您还可以在任何键值上执行set操作,即使它超出了最大键值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8925128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档