Java使用仿函数连接集合

给出了2个具有相同数量元素的集合,比如List< String>. JAVA中有哪些优雅的方法可以在具有相应索引的集合的每个2个元素上应用仿函数?

比如,一个例子可能是:
列表与LT;字符串&GT = {“APPLE”,“PEAR”};
列表与LT;字符串&GT = {“BANANA”,“ORANGE”};

将字符串连接在一起的谓词将导致以下List< String>:
列表与LT;字符串&GT = {“APPLEBANANA”,“PEARORANGE”};

解决方法:

类似于Apache Commons Collections中的functor,我在过去创建了二进制等价物.

对于您的情况,可以使用二进制转换器类型对象,它接受两个输入对象并返回单个对象.以下是一些示例代码,它传达了我的方法:

// 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

上一篇:python – 查找与谓词匹配的序列中的第一个元素


下一篇:VUE学习笔记4