[英]How to convert int[][] string to List<List<Integer>>
[英]How to convert List<String> to List<Integer>?
我在List<String>
获取常量List<String>
。 我需要List<Integer>
。 通过基本的方式,我将迭代并转换为Integer。
有没有更好的解决方案?
不,没有别的办法。
但是在这种情况下无法进行强制转换,您需要使用Integer.parseInt(stringValue)
。
List<String> listStrings = ...
List<Integer> listIntegers = new ArrayList<Integer>(listStrings.size());
for(String current:listStrings){
listIntegers.add(Integer.parseInt(current));
}
有一种方法可以做到这一点。
您可以使用适配器模式并创建一个implements List<Integer>
,但在内部访问List<String>
,在Integer和String之间转换值。 只要您履行所有合同,任何需要List<Integer>
API都可以使用此类,就像使用本机List<Integer>
。
这可能看起来很麻烦且效率低下,但是当您需要将List<Integer>
传递给仅访问列表的某些值的API时,可以更有效地按需投射其中一些(“延迟评估”)铸造所有这些。 它还节省了内存,因为您不会同时在内存中同时包含整个列表的字符串和整数表示。
for(String str : listOfString) {
listOfInteger.add(Integer.valueOf(str));
}
没有直接的方法可以做到这一点。
查看Google Guava's Lists
类,您可以执行以下操作:
List<Integer> result = Lists.transform(stringList, new Function<String, Integer>() {
@Override
public Integer apply(@Nullable String input) {
return Integer.parsInt(input)
}
});
据我记忆,它将懒洋洋地改变每个项目。
使用Java 8,有一些新的解决方案:
List<Integer> listOfIntegers = listOfStrings.stream().map(Integer::valueOf).collect(Collectors.toList());
没有明确而直接的方法来更改集合的参数化类型。 您应该创建另一个并在修改数据时传输数据。
另一种方式已经得到了回答 。
看起来循环是唯一的选择。 如果你不想“循环”自己,可以使用一些类(例如来自Apache Commons)。
这不仅仅是一个构建问题,因为String
和Integer
是根本不同的对象。
您必须循环遍历列表并在每个整数中解析一个新的整数:
List<Integer> intList = new ArrayList<Integer>();
for(String numeric : stringList)
{
intList.add(Integer.parseInt(numeric));
}
使用番石榴 :
List<String> strings = Lists.newArrayList("1", "2", "3");
List<Integer> ints = Lists.transform(strings, new Function<String, Integer>(){
public Integer apply(String input) {
return Integer.valueOf(input);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.