栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Java中将基元数组转换为容器数组

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Java中将基元数组转换为容器数组

Apache Commons

Apache Commons /
Lang
有一个ArrayUtils类,用于定义这些方法。

  • 所有称为
    toObject(...)
    从原始数组转换为包装器数组的方法
  • toPrimitive(...)
    从包装对象数组到原始数组的所有转换

例:

final int[]     original        = new int[] { 1, 2, 3 };final Integer[] wrappers        = ArrayUtils.toObject(original);final int[]     primitivesAgain = ArrayUtils.toPrimitive(wrappers);assert Arrays.equals(original, primitivesAgain);

番石榴

但是然后我会说,包装后的基元数组不是很有用,因此您可能想看看番石榴,它提供了所有数值类型的列表,并由基元数组支持:

List<Integer> intList = Ints.asList(1,2,3,4,5);List<Long> longList   = Longs.asList(1L,2L,3L,4L,5L);// etc.

这些数组支持的集合的好主意是

  1. 它们是实时视图(即,对数组的更新会更改列表,反之亦然)
  2. 包装器对象仅在需要时创建(例如,在迭代列表时)

参见:番石榴解释/原始


Java 8

另一方面,使用Java 8 lambda /流,您可以在不使用外部库的情况下使这些转换非常简单:

int[] primitiveInts = {1, 2, 3};Integer[] wrappedInts = Arrays.stream(primitiveInts)        .boxed()        .toArray(Integer[]::new);int[] unwrappedInts = Arrays.stream(wrappedInts)       .mapToInt(Integer::intValue)       .toArray();assertArrayEquals(primitiveInts, unwrappedInts);double[] primitiveDoubles = {1.1d, 2.2d, 3.3d};Double[] wrappedDoubles = Arrays.stream(primitiveDoubles)          .boxed()          .toArray(Double[]::new);double[] unwrappedDoubles = Arrays.stream(wrappedDoubles) .mapToDouble(Double::doublevalue) .toArray();assertArrayEquals(primitiveDoubles, unwrappedDoubles, 0.0001d);

请注意,在Java
8版本适用

int
long
并且
double
,而不是
byte
作为Arrays.stream()只具有过载
int[]
long[]
double[]
或者一个通用的对象
T[]



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/595157.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号