我有一种感觉,如果我知道我想做什么的Java术语,谷歌可以很快回答这个问题,但我不知道,所以在Stack Overflow中我相信。:)
我有一个Object
s的向量,并且我想要一个包含向量中每个元素的字符串表示的String
s数组,如通过对每个元素调用toString()
生成的。
在Ruby(或Perl,或Python,或Scheme,或使用map
方法的数百万种其他语言中的任何一种)中,我将如何做到这一点:
vector.map(&:to_s) do |string|
# do stuff
end
我如何在Java中执行等效操作?我想写这样的东西:
Vector<Object> vector = ...;
String[] strings = vector.map(somethingThatMagicallyCallsToString);
有什么想法吗?
如果你可以引进Guava,你可以使用它的transform
功能。
Iterable<String> strings = Iterables.transform(vector, Functions.toStringFunction());
transform
的第二个参数是Function
接口的一个实例。通常您会编写自己的实现,但Guava提供了toStringFunction()
和其他一些实现。
一种方法可以是:
Vector<Object> vector = ...;
ArrayList strings = new ArrayList();
for (Object obj : vector) {
strings.add(obj.toString());
}
return strings.toArray(new String[1]);