如何将 List转换为到另一个列表
我有两个对象列表; 列表
和列表
。 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
转换为 List
based on规则:
某些字段的值必须相等。
例如:
在List
中,对于一个对象Y,字段a的值必须相等。
在Y的字段List
中,对于一个对象A,字段w的值必须相等。
在A的字段List
中,对于一个对象B,字段m的值必须等于等等。
Guava有这个方法,Lists#transform,但我不知道如何转换。
或者有其他办法吗?
I have two lists of objects; List<X>
and List<Y>
. X
and Y
are ojects that look like:
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;
}
How transform List<X>
into List<Y>
based on a rule:
Some fields' values must be equal.
For example:
In List<Y>
, for one object Y, field a's value must equal.
In Y's field List<A>
, for one object A, field w's value must equal.
In A's field List<B>
, for one object B, field m's value must equal and so on.
Guava has this method, Lists#transform, but I don't know how to transform.
Or any other way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您可能需要阅读 Lists.transform() 和 函数,但基本上转换的调用者提供一个
Function
对象,该对象将F
转换为T
。例如,如果您有一个
ListintList
并且您想要创建一个List
,以便后者的每个元素都包含该数字的英文表示形式(1 变为“one”等),并且您可以访问诸如 IntToEnglish 之类的类,然后执行该转换。
您可以应用相同的模式将
List
转换为List
You might want to read up the API docs for Lists.transform() and Function, but basically the caller of the transform provides a
Function
object that converts anF
to aT
.For example if you have a
List<Integer> intList
and you want to create aList<String>
such that each element of the latter contains the english representation of that number (1 becomes "one" etc) and you have a access to a class such as IntToEnglish thenDoes that conversion.
You can apply the same pattern to transform your
List<X>
toList<Y>
使用java lambda:
你只需要实现:
java.util.function.Function
With java lambda:
You just need to implement:
java.util.function.Function
这个怎么样?
控制台输出:
How about this?
Console output:
与 @Isaace 相同,但使用 lambda 语法(从此示例< /a>):
Same as @Isaace but with the lambda syntax (got it from this example):
Java 8 风格,IntelliJ IDEA 帮助我:
Java 8 style, IntelliJ IDEA helped me out:
假设有两个对象可以相互转换,Coach 和 EntityBase
1.声明泛型方法
2.调用该方法
assume have two object can interconversion, Coach and EntityBase
1.declare generic method
2.call this method