假设一个类(例如URI)可以使用构造函数和toString()方法转换为String或从String转换。
我有一个ArrayList<URI>
我希望将其复制到ArrayList<String>
,或者反过来。
Java标准库中是否有实用程序功能可以执行此操作?类似的东西:
java.util.collections.copy(urlArray,stringArray);
我知道有一些实用程序库可以提供该功能,但我不想添加不必要的库。
我也知道如何编写这样的函数,但是阅读代码并发现有人已经编写了标准库中已存在的函数,这很烦人。
答案 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)
答案 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类传递给您要将字符串集合传递给的任何方法。