[英]Extraction of list of objects from list of objects in Java
假設您有一個如下的A
類:
public class A{
private B b;
public B getB(){return b;}
}
然后,您有一個A
對象的列表,並且想要創建另一個包含相關B
對象的列表,即
List<A> listOfA=...
List<B> listOfB = extractFrom(listOfA, "getB");
存在一個庫,該庫執行函數extractFrom
描述的魔術嗎? 也許它使用反射,我不知道。 或者,庫可能依賴於使用泛型的Extractor
接口,例如
public interface Extractor<T,V>{
public T extract(V source);
}
然后執行以下操作:
Extractor ex=...;
List<B> listOfB = extractFrom(listOfA, ex);
PS:標題太可怕了! 請編輯標題,以使其更有意義。
有一個解決方案。 這使用了番石榴 。
您需要一個Function<A, B>
,然后使用Lists.transform()
應用該函數:
final Function extractB = new Function<A, B>()
{
@Override
public B apply(final A input)
{
return input.getB();
}
}
// And then:
final List<B> listOfB = Lists.transform(listOfA, extractB);
請注意,Java 8將具有Function
,以及Guava“發明”的其他Function
( Predicate
是另一個示例)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.