Java中的Array和array[]有何区别?

4
我正在编写一个程序,它将严重依赖于...某样东西...,该东西可以像数组一样存储数据,我能够随时访问数据的任何点,就像在数组中一样。
我知道Java库有一个Array类可以使用,或者我可以使用原始数组[]。
我认为使用Array类型更容易编码,但我认为它稍微不那么高效。
我的问题是,在这两个之间使用哪个更好,并且是否有更好的方法来实现同样的结果?

你究竟想做什么?你知道有多少元素是预先存储的吗? - Foo Bah
1
你真的是指 Array,还是指 ArrayList - Gabe
这是你所指的 Array 吗?它只是一个实用类。 - Paul Bellora
@Gabe 根据听起来的意思,ArrayList 很可能是指的内容。 - Ray Toal
我确实是指数组,但是我对它的用法有误。我应该指的是 ArrayList。 - Andy
显示剩余4条评论
4个回答

5

实际上,Array 对你来说并没有任何帮助 -- 它不是你想象中的那样。相反,类java.util.ArrayList就可以胜任了。通常情况下,如果你能用像ArrayList这样的集合类进行编程,请尽量这么做 -- 这样你更容易得到正确、灵活的软件,而且更易于阅读。而且这个“如果”几乎适用于所有情况;原始数组是你最后的选择,或者更常见的情况是,当你想调用的方法需要一个原始数组作为参数时,你才会使用它。


啊,谢谢,ArrayList 就是我要找的,这回答了我的问题。 - Andy

3

Array类用于Java的反射,但是很少使用。

如果您想要在数组中存储数据,请使用普通的旧数组(用[]表示),或者像Gabe在问题的评论中建议的那样,使用java.util.ArrayList。正如您的评论所建议的那样,ArrayList更容易编写(当涉及添加和删除元素时!!),但效率略低。对于可变大小的集合,几乎需要使用ArrayList


2
我的问题是,这两者之间哪个更好用,并且是否有更好的方法来实现相同的结果?
这取决于你想要实现什么:
- 如果数组中的元素数量事先已知,则使用数组类型非常适合。否则,List 类型更方便。 - List 接口提供了许多方法,例如contains、insert、remove等等,如果你需要执行这些操作,可以节省编码时间。 - 如果正确使用,数组类型将占用更少的空间。在原始类型的数组中,使用 List 意味着元素需要使用包装类型(例如,byte 变成 Byte)。
Array类在此情境下不太有用,Arrays类也不是。选择是 ArrayList(或其他 List 实现类)和原始数组之间的选择。

-2
从易用性方面来看,Array类编码要容易得多。 在需要事先知道对象列表大小的情况下,数组[]会带来很大的问题。
相反,您可以使用HashMap。它在搜索和排序方面非常高效, 整个过程都是基于键值进行的。
您可以声明一个HashMap,如下所示:
HashMap<String, Object> map = new HashMap<String, Object>();

对于对象,您可以使用您的类,并且对于键,请使用需要是唯一的值。


为什么被踩了?难道提问者不是要求另一种方法吗? - jagbandhuster
1
-1 "the Array class is a lot easier to code" - Array 是一个实用类,但是 OP 的意思应该是 ArrayList。此外,HashMap 提供了 OP 不需要的功能,并且不再像数组或 List 一样有序。 - Paul Bellora

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接