Java使用函子连接集合 [英] Java join collections using functor
问题描述
2个集合具有相同数量的元素,例如 List< String>
。在 JAVA
中使用相应索引对集合的每两个元素应用函子的优雅方法是什么?
2 collections are given with the same number of elements, say List<String>
. What are elegant ways in JAVA
to apply a functor on each 2 elements of collections with corresponding indexes?
一个示例可以是:
List< String> = {APPLE,PEAR};
列表< String& = {BANANA,ORANGE};
将字符串连接在一起的谓词将导致以下 List< String>
:
列表< String> = {APPLEBANANA,PEARORANGE};
A predicate that joins string together will result in the following List<String>
:
List<String> = { "APPLEBANANA", "PEARORANGE" };
推荐答案
对于你的情况,一个二进制转换器类型对象,它接受两个输入对象并返回一个对象,可以使用。下面是一些传递我的方法的示例代码:
For your situation, a binary transformer type object, which takes to two input objects and returns a single object, could be used. Here is some sample code that's conveys my approach:
// 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
这篇关于Java使用函子连接集合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!