【发布时间】:2016-03-17 07:54:54
【问题描述】:
我正在构建一个 Android 应用程序,在该应用程序中我收到一条由逗号分隔的数字消息。示例输入是:
1,2,3,4,1,2,31,12,13,16
我收到这个并将其分配为字符串,然后使用 split 方法创建一个字符串[]:
String input = "1,2,3,4,1,2,31,12,13,16";
String[] arrayInput = input.split(",");
现在我有了输入的数组版本。接下来我要做的是将其转换为int[],主要用于优雅的编码。
现在,我实在受不了了:
int[] aGroup = Arrays.copyOfRange(arrayInput, 0, 3);
因为我会得到类型不匹配。为了聪明,我尝试了:
int[] aGroup = Integer.valueOf(Arrays.copyOfRange(arrayInput, 0 ,3));
但Integer.valueOf() 需要一个字符串输入,而不是多个数组元素。
我知道我可以像这样使用一个花哨的 for-each 循环:
List<Integer> arrayInputInt = new ArrayList<Integer>();
for(String entry : arrayInput){
arrayInputInt.add(Integer.valueOf(entry));
}
或类似的东西。虽然这个 for-each 循环看起来干净优雅,但我想知道是否有一个更优雅、更赏心悦目,一个线性 String[] 到 int[] 转换器。
编辑
This question 已链接,因为我的问题可能与此问题重复。问题中的答案使用循环遍历String ArrayList 中的每个元素,尝试解析它们,然后将其转换为Integer 并将其放入Integer ArrayList 中。我正在寻找的解决方案是使用 String[] 到 int[] 转换的单行无循环类型。
【问题讨论】:
-
你可以使用 RxJava
map -
我不这么认为,因为我还没有更新我的 Java。
-
我跳过了你使用的是 Android,所以你需要下载 RxJava 库才能使用 Streams
-
我在这里没有看到任何与 android 相关的内容
-
@greenapps 可能。正如“cricket_007”在我的回答中指出的那样,“这是一个 Android 应用程序。本身不支持 lambda”。
标签: java android arrays string arraylist