使用Arrays.asList(something)优于Collections.singletonList(something)来构成包含一项的列表是否有优势(或有很大不同)?后者使返回的列表也不可变。
Collections.singletonList(something)
是 不可变的,
而数组Arrays.asList(something)
是固定大小的List
表示形式,列表和数组在堆中连接在一起。
Arrays.asList(something)
允许对其进行 非结构更改 ,这些 更改 将同时反映到List和联合数组中。
UnsupportedOperationException
尽管您可以为特定索引设置元素,但它会添加,删除元素。
对返回的列表所做的任何更改Collections.singletonList(something)
都会导致
UnsupportedOperationException
。
同样,返回的列表的容量Collections.singletonList(something)
将始终为
1,这Arrays.asList(something)
与其后备阵列的容量不同。
问题内容: 如果您有一个Array,并且想使用Java8 forEach()方法,那么哪种方法更好或更有效: 要么 差异是否显着,或者有更好的解决方案来解决? 问题答案: 都不行 如果您已经有一个数组, 我会用: 因为您将数组到流的转换留给了JDK-让它负责效率等。 但是,由于您没有数组,因此我将使用的varargs创建值的流: 这又让JDK负责有效地按需传输值。
问题内容: 该方法返回的表示形式。这里返回的对象是数组支持的,但不是对象。 我正在寻找对象返回值与对象之间的差异- 一种快速的来源,可以告诉它们而无需深入研究代码。 TIA。 问题答案: 当您调用Arrays.asList时,它不会返回。它返回一个由原始源数组支持的固定大小列表。换句话说,它是使用Java的基于集合的API公开的数组的视图。 您不能向其中添加元素,也不能从中删除元素。如果您尝试从中
问题内容: 我有一个双重数组。我尝试了如下操作 它不打印任何内容。然后我把它做成一个双数组 它打印。 有人可以解释为什么存在这种差异吗? 问题答案: 您的第一个调用实际上是返回-将参数自动装箱,因为a 不是…。泛型不允许将基本类型用作类型参数。 如果您要将a 转换为,则需要手动执行,或使用第三方库来执行。例如: 请注意,与数组的任何后续更改不同,它 不会 反映在列表中,反之亦然-它是副本,而不是视
问题内容: 所以有,但这对可变参数有效。 如果我已经在数组中了怎么办?是否有方便的方法来创建此文件,或者我必须手动执行以下操作: 问题答案: 仅仅因为它与varargs一起工作并不意味着您不能正常调用它: 唯一棘手的问题是ifT是Object,您应该在其中使用强制类型转换来告诉编译器是否应将参数包装在数组中: 要么
问题内容: 使用,为什么它对(原始类型)和数组显示不同的列表大小? a)对于数组,每当我执行以下程序时,列表大小= 1 b)但是,如果我从数组类型更改为array(如),则列表大小为4,我认为这是正确的。 PS :使用(包装类)数组,则结果很好,但是我不确定为什么在原始数组中列表大小为1。请解释。 问题答案: 由于Java泛型而无法保存原始值(请参阅类似的问题)。因此,当您调用Arrays 时,将
问题内容: 这种转换有什么问题? 在从array读取CreateArrayList中找到的解决方案后,我进行了此操作。第二行(排序)导致以下异常: 线程“主”中的异常java.lang.ClassCastException:[无法强制转换为java.lang.Comparable] 怎么了 我确实意识到可以使用进行排序,但我对此感到很好奇。 问题答案: 让我们考虑以下简化示例: 在println行