从Java中的另一个ArrayList获取ArrayLists的ArrayList

时间:2017-03-30 17:13:53

标签: java android arraylist

我有一个MyClass的ArrayList,我需要根据类的属性重复从中提取多个列表。

MyClass的:

public class MyClass{
    private int ID;
    private String Name;
    private String Position;

    public MyClass(int ID, String name, String position){
        this.ID = ID;
        Name = name;
        Position = position;
    }
}

示例:

在我的ArrayList中,我有5个对象:

ID = 0, Name = "Name 0", Position = "G1.1";
ID = 1, Name = "Name 1", Position = "G2.1";
ID = 2, Name = "Name 2", Position = "G1.1";
ID = 3, Name = "Name 3", Position = "G1.1";
ID = 4, Name = "Name 4", Position = "G2.1";

从这个列表中我将创建2个ArrayLists:

ArrayList 1 (Where Position = "G1.1")
    ID = 0, Name = "Name 0", Position = "G1.1";
    ID = 2, Name = "Name 2", Position = "G1.1";
    ID = 3, Name = "Name 3", Position = "G1.1";
ArrayList 2 (Where Position = "G2.1")
    ID = 1, Name = "Name 1", Position = "G2.1";
    ID = 4, Name = "Name 4", Position = "G2.1";

主要列表是动态创建的,所以我不知道为了获取项目我需要创建什么位置。

2 个答案:

答案 0 :(得分:1)

您可以将这些项目一起收集到这样的地图中:

Map<String, List<MyClass>> grp = l.stream().collect(Collectors.groupingBy(o -> o.Position));

答案 1 :(得分:0)

尝试使用HashMap。

Map<String, List<MyClass>> hm = new HashMap<String, List<MyClass>>();
for(MyClass obj : OrignalList){
    if(null != hm.get(obj.Position)){
         String pos = obj.Position;
         hm.put(pos, hm.get(pos).add(obj));
    }else {
         List<MyClass> temp = new ArrayList<MyClass>();
         temp.add(obj);
         hm.put(obj.Position, temp);
    }
}