gpt4 book ai didi

java - 将 String[] 转换为 int[](或将 ArrayList 转换为 ArrayList)的优雅方式

转载 作者:行者123 更新时间:2023-11-30 01:28:46 25 4
gpt4 key购买 nike

我正在构建一个 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[] 转换。

最佳答案

在 lambda 之前,我通过创建转换器接口(interface)和 convertList 实用方法解决了这个问题,如下所示

 interface Converter<S,T>{ 
T convert(S source);
}



class ListConverter{
static public <S,T> List<T> convertList(List<S> source,Converter<S,T> converter){
List<T> target= new ArrayList<>();
for (S s : source){
target.add(converter(s));
}
return target;
}
}

那么如果你想使用它,你可以这样做

List<Integer> ints = ListConverter.convertList(Arrays.asList(input.split(","),new Converter<String,Integer>(){
public Integer convert(String source){
return Integer.parseInt(source);

}
})

显然你不需要每次都实例化转换器,你可以为普通转换器创建单例

关于java - 将 String[] 转换为 int[](或将 ArrayList<String> 转换为 ArrayList<Integer>)的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36054531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com