在开发过程中可能会遇到,需要将List集合内具有相同属性的对象进行分类的情况,具体代码操作如下:
package test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
public class TestList {
public static void main(String[] args) {
Stu s1 = new Stu("a", 2);
Stu s2 = new Stu("c", 44);
Stu s3 = new Stu("b", 2);
Stu s4 = new Stu("d", 3);
List<Stu> list = new ArrayList();
list.add(s1);list.add(s2);list.add(s3);list.add(s4);
List<List<Stu>> result = new ArrayList<>();
Map<Integer,List<Stu>> map = new HashMap<>();
for (Stu stu : list) {
Integer age = stu.age;
List<Stu> lstStu;
//判断map是否包含相同的key
if (map.containsKey(age)) {
//取出以存在相同key的map
lstStu= map.get(age);
}else{
//不存在相同的key,则创建新的list
lstStu= new ArrayList<>();
}
//将相同age的stu添加进去
lstStu.add(stu);
//将list存到map当中,age作为key
map.put(age,lstStu);
}
System.out.println(map);
// 将相同age的对象集合存入新的list集合中
// for (Map.Entry<Integer, List<Stu>> entry : map.entrySet()) {
// result.add(entry.getValue());
// }
// System.out.println(result);
}
}
class Stu{
String name;
int age;
public Stu(String name, int age) {
super();
this.name = name;
this.age = age;
}
}
结果显示:
打印map,key为age,value为相同age的对象
也可将相同age的对象集合存入新的list集合中
取用时可以根据数组下标获取,或者根据map的key获取想要的list集合