我有一个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";
主要列表是动态创建的,所以我不知道为了获取项目我需要创建什么位置。
答案 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);
}
}