java – 如何将列表转换到另一个列表

我有两个对象列表;列表< X>和List< Y&gt ;. X和Y是类似于以下内容的对象:

public class X {
    String a;
    String b;
    String v;
    String w;
    String m;
    String n;
}

public class Y {
    String a;
    String b;
    List<A> aList;
}
public class A {
    String v;
    String w;
    List<B> bList;
}
public class B {
    String m;
    String n;
}

如何变换列表< X>到List< Y>基于规则:
一些字段的值必须相等。
例如:
在列表< Y>中,对于一个对象Y,字段a的值必须相等。
在Y的字段List< A>中,对于一个对象A,字段w的值必须相等。
在A的字段List< B>中,对于一个对象B,字段m的值必须等于,以此类推。

Guava有这个方法,Lists#transform,但我不知道如何转换。

还是任何其他方式?

public static <F,T> List<T> transform(List<F> fromList,
                                      Function<? super F,? extends T> function

您可能想要读取Lists.transform()Function的API文档,但基本上转换的调用者提供了一个将对象转换为T的Function对象。

例如,如果您有一个List< Integer> intList并且你想创建一个List< String>使得后者的每个元素包含该数字的英语表示(1变为“一”等),并且您可以访问诸如IntToEnglish的类,然后

Function<Integer, String> intToEnglish = 
    new Function<Integer,String>() { 
        public String apply(Integer i) { return new IntToEnglish().english_number(i); }
    };

List<String> wordsList = Lists.transform(intList, intToEnglish);

是否转换。

您可以应用相同的模式来转换列表< X>到列表< Y>

http://stackoverflow.com/questions/7383624/how-to-transform-listx-to-another-listy

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 如何将列表转换到另一个列表