在Android应用程序中,我有一个对象列表,我想将两个属性提取到一个新的对象列表中。但是这些新列表应该具有不同的值。
例如;
public class ModelA{
public String BaseId;
public String BaseName;
public String ChildId;
public String ChildName;
public ModelA(String bId, String bName, String cId, String cName){
this.BaseId=bId;
this.BaseName=bName;
this.ChildId=cId;
this.ChildName=cName;
}
}
ModelA a1 = new ModelA("1","b1","x","x1");
ModelA a2 = new ModelA("1","b1","y","y1");
ModelA a3 = new ModelA("2","b2","z","z1");
List<ModelA> lstA = new List<>();
lstA.Add(a1);
lstA.Add(a2);
lstA.Add(a3);
public class ModelB{
public String BaseId;
public String BaseName;
public ModelB(String bId, String bName){
this.BaseId=bId;
this.BaseName=bName;
}
}
List<ModelB> lstB=new List<>();
我有上面的列表(lstA),我想将BaseId和BaseName属性提取到一个新列表(lstB)。但值应该是不同的,所以新列表应该有2个值。
修改
有没有像这种C#方式那样使用for-loop的方法;
lstB = lstA.Select(p => new ModelB(){BaseId=p.BaseId, BaseName=p.BaseName}).Distinct().ToList();
我该怎么做?我可以使用番石榴,lambdaJ或任何其他东西。 你能帮助我吗? 感谢
答案 0 :(得分:0)
创建一个空列表B.
遍历列表A。
对于每个元素,获取BaseId并检查列表B,如果B包含特定的BaseId。
如果没有,请从元素中获取BaseName并将元素添加到B.
如果已经存在,请跳过此元素并继续对列表A进行迭代。