Java将一个字符串数组映射到整型数组

21

我在 Stack Overflow 上找到了这段代码,用于将字符串映射为整数

Translated text:

我在 Stack Overflow 上找到了这段代码,用于将字符串映射为整数

Arrays.stream(myarray).mapToInt(Integer::parseInt).toArray();

但是我如何使它映射到Integer类型而不是原始的int类型?

我尝试使用Integer.valueOf替换Integer.parseInt,但似乎mapToInt()方法强制使用原始类型。

我有一个整数数组的ArrayList,所以我不能使用原始的int类型。


Integer类实际上就是一个int。它为您封装和解封装了一个int,因此从理论上讲,它们是相同的。 - Josh Heaps
是的,但是当我试图将映射数组添加到我的整数ArrayList时,这种方法会显示一个错误:“类型ArrayList<Integer[]>中的方法add(Integer [])不适用于参数(int [])”。 - Fiodor
1
这个问题似乎与你的疑问相关。 - Alfabravo
2个回答

26

由于StringInteger都属于引用类型,您可以直接调用Stream::map来转换您的数组。

Integer[] boxed = Stream.of(myarray).map(Integer::valueOf).toArray(Integer[]::new);

5

你可以使用Stream<Integer> boxed()方法。

Stream<Integer> boxed() 返回一个流,其中包含此流的元素,每个元素都被装箱为 Integer。

ArrayList<Integer[]> resultSet = new ArrayList<>();
resultSet.add(Arrays.stream(myarray).mapToInt(Integer::parseInt).boxed().toArray(Integer[]::new));

非常感谢。不过有没有更优雅的方法呢?比如在JavaScript中使用myarray.map(function(e) {return parseInt(e);});?这似乎需要很多嵌套调用和中间类型转换,仅仅是将String[]转换为Integer[]。 - Fiodor
你可以使用 map 而不是 boxmapIntString [] myArray = {"1", "2", "3", "4"}; Integer[] integerList =Arrays.stream(myArray).map(Integer::valueOf).toArray(Integer[]::new);System.out.print(integerList[0].getClass()); //输出:class java.lang.Integer - Teena George

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