有什么区别
> < li>
<代码>列表
<代码>列表
,其中 ia
是整数数组?
我知道有些操作在< code>list2中是不允许的。为什么会这样呢?它是如何存储在内存中的(引用/复制)?
当我洗牌列表时,list1
不会影响原始数组,但list2
。但list2
仍然有些令人困惑。
将ArrayList
上传到列表与创建新的Array列表有何不同?
list1 differs from (1)
ArrayList<Integer> list1 = new ArrayList<Integer>(Arrays.asList(ia));
List<Integer> list1 = new ArrayList<Integer>(Arrays.asList(ia)); //copy
在这种情况下,list1
的类型为ArrayList
。
List<Integer> list2 = Arrays.asList(ia);
这里,列表作为< code>List视图返回,这意味着它只包含附加到该接口的方法。因此,有些方法在< code>list2上是不允许的。
ArrayList<Integer> list1 = new ArrayList<Integer>(Arrays.asList(ia));
在这里,您正在创建一个新的ArrayList
。您只是在构造函数中向它传递一个值。这不是铸造的示例。在铸造中,它可能看起来更像这样:
ArrayList list1 = (ArrayList)Arrays.asList(ia);
这是因为ArrayList
是由数组生成的。asList()
不是java.util.ArrayList
.类型。
数组列表()
创建一个类型
为 java.utils$ArrayList 的数组列表
,该列表不扩展 Java.util.ArrayList
,而只扩展 java.util.抽象列表
。
>
首先,让我们看看它的作用:
Arrays.asList(ia)
它采用数组< code>ia并创建一个实现< code>List的包装器
注意,列表包装器没有扩展< code > ArrayList ——它是一种不同的对象。< code>ArrayList有自己的内部数组,在其中存储元素,并能够调整内部数组的大小等。包装器没有自己的内部数组,它只将操作传播给给它的数组。
另一方面,如果随后创建新阵列
new ArrayList<Integer>(Arrays.asList(ia))
然后创建新的阵列列表
,它是原始列表的完整独立副本。尽管此处也使用 Arrays.asList
创建包装器,但它仅在构造新的 ArrayList
期间使用,之后将进行垃圾回收。这个新的数组列表的结构
完全独立于原始数组。它包含相同的元素(原始数组和这个新的 ArrayList
都引用内存中的相同整数),但它会创建一个新的内部数组来保存引用。因此,当您随机播放,添加,删除元素等时,原始数组保持不变。
问题内容: 所以有,但这对可变参数有效。 如果我已经在数组中了怎么办?是否有方便的方法来创建此文件,或者我必须手动执行以下操作: 问题答案: 仅仅因为它与varargs一起工作并不意味着您不能正常调用它: 唯一棘手的问题是ifT是Object,您应该在其中使用强制类型转换来告诉编译器是否应将参数包装在数组中: 要么
我正在写一个PHP应用程序,我想确保它将工作没有错误。
我是Java和静态编程语言的新手。 最近当我在学习静态编程语言的时候读了一个教程。 我发现有一些让我困惑。 、和
本章主要总结与整型数组相关的题。
问题内容: 我正在编写一个PHP应用程序,我想确保它不会出现错误。 原始代码: 以下内容可以正常工作还是不建议使用? 有什么区别吗? 我再次查看了有关数据以及PHP.net中带有方括号的短数组方法,但不确定。 而且,简短的php标签是否适合回显?有版本问题吗?(提供在php.ini中启用) 问题答案: PHP> = 5.4支持以下功能: 这只是一个短语法,在 PHP <5.4中将不起作用。
本文向大家介绍Java中Array的长度和ArrayList的大小之间的差异,包括了Java中Array的长度和ArrayList的大小之间的差异的使用技巧和注意事项,需要的朋友参考一下 在集合中,主要功能需求之一就是获取要存储在我们的集合中的元素数量,以便可以决定是否在其中添加更多元素。同样,元素的数量对于集合的迭代也是必需的。 众所周知,Array和Arraylist都用于存储元素,但是都有不