列出不同数据类型之间的转换

时间:2010-12-09 05:50:53

标签: java

转换List<Integer> to List<String>个对象的最简单方法是什么?目前我遍历所有整数并将它们添加到List<String> objects,是否有可用的实用函数?

5 个答案:

答案 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值。