Android - 将提取和不同列表属性提取到另一个列表中

时间:2016-06-16 12:19:34

标签: java android list


在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或任何其他东西。 你能帮助我吗? 感谢

1 个答案:

答案 0 :(得分:0)

创建一个空列表B.

遍历列表A。

对于每个元素,获取BaseId并检查列表B,如果B包含特定的BaseId。

如果没有,请从元素中获取BaseName并将元素添加到B.

如果已经存在,请跳过此元素并继续对列表A进行迭代。