在多个线程中将一个集合映射到另一个集合

时间:2013-05-15 15:21:03

标签: java multithreading

我有一组对象,我想将它们映射到另一个集合,对每个元素执行类似的例行操作。我想在并行线程中执行这些原子例程操作,并寻找一些可以帮助我的现成库:

Collection<X> source = // ...
Collection<Y> result = Threader.map(
  source,
  new Mapping<X, Y>() {
    @Override
    public Y map(X src) {
      // do something and return an instance of Y
    }
  }
);

我知道它很容易实现,但我不想重新发明轮子。你知道任何包含Threader类的库吗?

我认为Java 8 streams会做类似的事情......

我向Guava提交了一项功能请求:https://code.google.com/p/guava-libraries/issues/detail?id=1422

1 个答案:

答案 0 :(得分:2)

functionaljava库可以做你想要的。它提供了自己的集合类型,可以转换为java.util.Collection或从java.util.Collection转换。集合类型具有可以为其提供自己的函数的映射操作,以及用于该映射的并发策略。关于在这里使用functionaljava进行并行列表处理的帖子很好:

http://apocalisp.wordpress.com/2008/06/30/parallel-list-transformations/