转换List<Integer> to List<String>
个对象的最简单方法是什么?目前我遍历所有整数并将它们添加到List<String> objects
,是否有可用的实用函数?
答案 0 :(得分:5)
你找到了一个简单的方法。类型是“不兼容的”,因此您无论如何都需要转换规则(在您的情况下这很简单)。该算法将始终为O(n),无论是手动迭代集合还是从某些第三方库调用某些API方法(JRE不为您的任务提供API)。
答案 1 :(得分:2)
虽然有些库可以进行常规List
转换(例如Google的Guava),但在这种情况下使用一个库可能无法保存任何代码行,因为您需要创建一个Function
对象,仅此一项涉及如此多的样板,以至于您现有的代码可能更小。
答案 2 :(得分:1)
我认为没有一种自动方法可以做到这一点,仅仅因为Java编译通用参数的方式(称为类型擦除,一种复杂的说法“哈哈,我们实际上只保存对象引用和编译器每次执行get()“)时都会将强制转换插入到泛型参数中。
为什么必须将其转换为字符串列表?每次你需要一个字符串列表来迭代整个列表并在每个字符串上调用toString()时,它是不是一样?
编辑:
无论哪种方式,这是一个可行的解决方案:
public static List<String> convToString(List<Integer> list){
List<String> ret = new ArrayList<String>();
for (Integer i : list){
ret.add(i.toString());
}
return ret;
}
又回来了!
public static List<Integer> convToInteger(List<String> list){
List<Integer> ret = new ArrayList<Integer>();
for (String s : list){
ret.add(Integer.parseInt(s));
}
return ret;
}
答案 3 :(得分:1)
我认为我们没有这个任务的实用功能。即使存在实用功能,也可能需要迭代List<Integer>
答案 4 :(得分:1)
你必须有一个List结构吗?为什么不执行Map<Integer, String>
,并且在插入整数时,可以创建该整数的String值。