将某些类的Java Collection转换为String的Collection

时间:2009-11-11 00:32:12

标签: java collections

假设一个类(例如URI)可以使用构造函数和toString()方法转换为String或从String转换。

我有一个ArrayList<URI>我希望将其复制到ArrayList<String>,或者反过来。

Java标准库中是否有实用程序功能可以执行此操作?类似的东西:

java.util.collections.copy(urlArray,stringArray);

我知道有一些实用程序库可以提供该功能,但我不想添加不必要的库。

我也知道如何编写这样的函数,但是阅读代码并发现有人已经编写了标准库中已存在的函数,这很烦人。

5 个答案:

答案 0 :(得分:5)

我知道您不想添加其他库,但对于从搜索引擎中找到此内容的任何人,您可以使用google-collections:

List<String> strings = Lists.transform(uris, Functions.toStringFunction());

单向,

List<String> uris = Lists.transform(strings, new Function<String, URI>() {
  public URI apply(String from) {
     try {
       return new URI(from);
     } catch (URISyntaxException e) {
       // whatever you need to do here
     }
  }
});

另一个。

答案 1 :(得分:4)

不,没有标准的JDK快捷方式来执行此操作。

答案 2 :(得分:2)

看看commons-collections:

http://commons.apache.org/collections/

我相信CollectionUtils有一个转换方法。

答案 3 :(得分:0)

由于两种类型的集合可能不兼容,因此没有内置方法将一个类型集合转换为另一个类型集合。

答案 4 :(得分:0)

尝试:

public ArrayList<String> convert(ArrayList<URI> source) {
    ArrayList<String> dest=new ArrayList<String>();

    for(URI uri : source)
        dest.add(source.toString());

   return dest;
}

说真的,内置API会提供很多东西吗?

另外,不是很OO。 URI数组应该包含在类中。该类可能有.asStrings()方法。

此外,如果正确编写URI类,您可能会发现甚至不需要(甚至不需要)String集合版本。您可能只需要在URI类上使用getAsString(int index)方法或getStringIterator()方法,然后就可以将URI类传递给您要将字符串集合传递给的任何方法。