给定 2 个具有相同数量元素的集合,例如List<String>
。优雅的方式有哪些JAVA
对具有相应索引的集合的每 2 个元素应用一个函子?
比如说,一个例子可以是:
List<String> = { "APPLE", "PEAR" };
List<String> = { "BANANA", "ORANGE" };
将字符串连接在一起的谓词将导致以下结果List<String>
:
List<String> = { "APPLEBANANA", "PEARORANGE" };
类似于 Apache Commons Collections 中找到的函子,我过去已经创建了二进制等价物。
对于您的情况,可以使用二进制转换器类型对象,它接受两个输入对象并返回一个对象。这是一些传达我的方法的示例代码:
// tranformer
interface BinaryTransformer<X, Y, Z> {
Z transform(X a, Y b);
}
// implementation for your problem
class ConcatTransformer implements BinaryTransformer<String, String, String> {
public String transform(String a, String b) {
return a + b;
}
}
// general use transformer
class BinaryListUtils {
public static <X, Y, Z> List<Z> collect(List<X> aList, List<Y> bList, BinaryTransformer<X, Y, Z> t) {
List<Z> ret = new ArrayList<Z>(aList.size());
Iterator<X> aIter = aList.iterator();
Iterator<Y> bIter = bList.iterator();
while(aIter.hasNext()) {
ret.add(t.transform(aIter.next(), bIter.next()));
}
}
}
HTH
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)