Java使用函子连接集合 [英] Java join collections using functor

查看:134
本文介绍了Java使用函子连接集合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆