如何将 List 转换为另一个 List [重复]

2024-03-16

我有两个对象列表;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(使用前将#替换为@)

如何将 List 转换为另一个 List [重复] 的相关文章

随机推荐