参见英文答案 > How can I call a method on each element of a List? 5个
我有两个对象列表;列表与LT; X>和列表< Y>. 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;
}
如何变换List< X>到列表< Y>基于规则:
某些字段的值必须相等.
例如:
在List< Y>中,对于一个对象Y,字段a的值必须相等.
在Y的字段列表< A>中,对于一个对象A,字段w的值必须相等.
在A的字段列表< B>中,对于一个对象B,字段m的值必须相等,依此类推.
番石榴有这种方法,Lists#transform,但我不知道如何改造.
还是其他任何方式?
解决方法:
public static <F,T> List<T> transform(List<F> fromList,
Function<? super F,? extends T> function
您可能想要读取Lists.transform()和Function的API文档,但基本上转换的调用者提供了一个将F转换为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);
那转换.
您可以应用相同的模式来转换List< X>列出< Y>
标签:java,list,guava,transform 来源: https://codeday.me/bug/20190926/1818130.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。