Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java中的对象列表中提取对象列表_Java - Fatal编程技术网

从Java中的对象列表中提取对象列表

从Java中的对象列表中提取对象列表,java,Java,假设您有一个类a,如下所示: public class A{ private B b; public B getB(){return b;} } 然后,您有一个a对象的列表,您希望创建另一个包含相关B对象的列表,即 List<A> listOfA=... List<B> listOfB = extractFrom(listOfA, "getB"); 然后你会: Extractor ex=...; List<B> listOfB = extract

假设您有一个类
a
,如下所示:

public class A{
  private B b;

  public B getB(){return b;}
}
然后,您有一个
a
对象的列表,您希望创建另一个包含相关
B
对象的列表,即

List<A> listOfA=...
List<B> listOfB = extractFrom(listOfA, "getB");
然后你会:

Extractor ex=...;
List<B> listOfB = extractFrom(listOfA, ex);
提取器ex=。。。;
List listOfB=提取自(listOfA,ex);

附言:标题太可怕了!请编辑标题,使其更有意义。

有一个解决方案。这使用了

您需要一个
函数
,然后使用
list.transform()
应用该函数:

final Function extractB=新函数()
{
@凌驾
公共B应用(最终A输入)
{
返回input.getB();
}
}
//然后:
最终列表listOfB=Lists.transform(listOfA,extractB);

请注意,Java8将具有
功能
,以及Guava“发明”的其他细节(
谓词
是另一个示例)。

有一个解决方案。这使用了

您需要一个
函数
,然后使用
list.transform()
应用该函数:

final Function extractB=新函数()
{
@凌驾
公共B应用(最终A输入)
{
返回input.getB();
}
}
//然后:
最终列表listOfB=Lists.transform(listOfA,extractB);
请注意,Java8将具有
功能
,以及Guava“发明”的其他细节(
谓词
是另一个示例)。

这就是所谓的映射

在这里,祝你好运

此外,您还可以使用

举例来说:

Collection<B> bs = CollectionUtils.collect(collectionOfA, new Transformer() {
    public Object transform(Object a) {
        return ((A) a).getB();
    }
});
Collection bs=CollectionUtils.collect(collectionOfA,newtransformer(){
公共对象变换(对象a){
return((A)A.getB();
}
});
这就是所谓的地图

在这里,祝你好运

此外,您还可以使用

举例来说:

Collection<B> bs = CollectionUtils.collect(collectionOfA, new Transformer() {
    public Object transform(Object a) {
        return ((A) a).getB();
    }
});
Collection bs=CollectionUtils.collect(collectionOfA,newtransformer(){
公共对象变换(对象a){
return((A)A.getB();
}
});

AFAIK不,没有这样的库。只是作为提示:您正在Java中寻找与Python的map(function,iterable,…)函数等价的函数,如下所述:好的,我将自己实现它。通常我不喜欢重新发明油井!不,没有这样的库。只是作为一个提示:您正在寻找Java中与Python的map(function,iterable,…)函数等价的函数,如下所述:好的,我将自己实现它。通常我不喜欢重新发明油井!哦伟大的我非常惊讶地发现,还没有人实现了如此有用的实用程序!非常感谢。番石榴是金矿。使用它(tm):我知道,我使用它!但我不知道所有的实用程序。:)哦伟大的我非常惊讶地发现,还没有人实现了如此有用的实用程序!非常感谢。番石榴是金矿。使用它(tm):我知道,我使用它!但我不知道所有的实用程序。:)对不久前,我看到一个使用泛型的apache commons实现,但我没有找到链接。是的。不久前,我看到一个使用泛型的apache commons实现,但我没有找到链接。
Collection<B> bs = CollectionUtils.collect(collectionOfA, new Transformer() {
    public Object transform(Object a) {
        return ((A) a).getB();
    }
});