是:使用 ArrayList。
在 Java 中,“普通”数组是固定大小的。您必须给它们一个大小,并且不能扩展它们或收缩它们。要更改大小,您必须创建一个新数组并复制您想要的数据 - 这对您来说效率低下并且很痛苦。
幸运的是,有各种实现通用数据结构的内置类,以及其他有用的工具。您需要查看 the Java 6 API 以获取它们的完整列表。
一个警告:ArrayList 只能保存对象(例如整数),不能保存基元(例如整数)。在大多数情况下,autoboxing/autounboxing 会默默地为您解决这个问题,但您可能会遇到一些奇怪的行为,具体取决于您在做什么。
Java中的数组是固定大小的。您需要的是一个 ArrayList,它是 Java 中许多非常有价值的集合之一。
代替
Integer[] ints = new Integer[x]
你用
List<Integer> ints = new ArrayList<Integer>();
然后要更改列表,您可以使用 ints.add(y)
和 ints.remove(z)
以及您可以在相应的 Javadocs 中找到的许多其他方便的方法。
我强烈建议研究 Java 中可用的 Collections 类,因为它们非常强大,并为您提供了许多 Java 新手倾向于尝试不必要地重写自己的内置功能。
List<Integer>
而不是 ArrayList<Integer>
?
一旦实例化,数组的大小是固定的。您可以改用列表。
自动装箱使 List 类似于数组一样可用,您可以简单地将 int-values 放入其中:
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
我不同意之前建议 ArrayList
的答案,因为 ArrayList
不是 动态数组,而是由数组支持的列表。不同之处在于您不能执行以下操作:
ArrayList list = new ArrayList(4);
list.put(3,"Test");
它会给你一个 IndexOutOfBoundsException 因为在这个位置还没有元素,即使支持数组允许这样的添加。因此,您需要使用@randy-lance 建议的自定义可扩展数组实现
建议使用 List 来处理小规模的大小。如果你有大量的数字,永远不要使用 List 和自动装箱, List< Integer> list
对于每一个 int,都会自动创建一个新的 Integer。当列表的大小增加时,您会发现它变得越来越慢。这些整数是不必要的对象。在这种情况下,使用估计的大小会更好,
int[] array = new int[ESTIMATED_SIZE];
改用 List
怎么样?例如,ArrayList<integer>
您无法更改数组的大小。但是,您可以创建一个大小合适的新数组并将数据从旧数组复制到新数组。
但是您最好的选择是使用来自 jacarta commons 的 IntList。 (here)
它就像 List 一样工作,但占用的空间更少,效率更高,因为它存储 int 而不是在 int 上存储包装器对象(这就是 Integer 类的内容)。
不定期副业成功案例分享
int[] array = new int[size];
size
是一个变量,但数组的长度必须是固定的,对吗?@Lord Torgamussize
;执行该行时,它会获得size
中发生的任何大小。null
。任何想法为什么?