我有两个对象列表;List<X>
and List<Y>
. X
and 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;
}
如何转型List<X>
into List<Y>
基于一个规则:
某些字段的值必须相等。
例如:
In List<Y>
,对于一个对象 Y,字段 a 的值必须相等。
在Y的领域List<A>
,对于一个对象A,字段w的值必须相等。
在A的领域List<B>
,对于一个对象B,字段m的值必须等于等等。
番石榴有这个方法,列表#transform https://google.github.io/guava/releases/19.0/api/docs/com/google/common/collect/Lists.html#transform(java.util.List,%20com.google.common.base.Function),但我不知道如何转变。
或者有其他办法吗?
public static <F,T> List<T> transform(List<F> fromList,
Function<? super F,? extends T> function
您可能需要阅读 API 文档列表.transform() https://google.github.io/guava/releases/snapshot/api/docs/com/google/common/collect/Lists.html#transform(java.util.List,%20com.google.common.base.Function) and Function https://google.github.io/guava/releases/snapshot/api/docs/com/google/common/base/Function.html,但基本上转换的调用者提供了一个Function
转换的对象F
to a T
.
例如,如果您有一个List<Integer> intList
你想创建一个List<String>
这样后者的每个元素都包含该数字的英文表示(1 变成“一”等),并且您可以访问一个类,例如综合英语 http://snippets.dzone.com/posts/show/3685 then
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);
是否进行转换。
您可以应用相同的模式来改变您的List<X>
to List<Y>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)