这是我第一次使用 Java。我需要有关根据属性唯一值将列表分配到列表中的帮助。我创建从SQL表称为对象Student的属性ID,NAME以及COUNTRYpackage Data;import java.util.ArrayList;import java.util.List;import Oracle.DBConnection;public class Students {public static void main(String[] args) { DBConnection.OpenConnection(); String query = "SELECT * FROM STUDENT ORDER BY COUNTRY"; Student[] students = DBConnection.ExecuteQuery(query); DBConnection.CloseConnection(); }}现在我有对象学生,有什么方法可以根据独特的城市对学生对象进行分组并创建一个包含这些对象的列表?该列表将如下所示:List = [object1, object2, object3,etc]并且每个对象都有相同的记录 COUNTRY提前致谢
1 回答
慕侠2389804
TA贡献1719条经验 获得超6个赞
您应该查看地图,更具体地说是查看地图Map<String, Set<Student>>。您返回的数组应该已经排序,因为这是您在查询中放置的内容,但是如果您想进一步组织和使用您的数据,您可以将此列表转换为地图,这是一种更有用的数据结构给你。
例如(在 Java 8 中)有这样的东西:
List<Student> studentList = Arrays.asList(students);
Map<String, Set<Student>> mapByCountry = studentList.stream().collect(Collectors.groupingBy(student -> student.getCountry(), Collectors.toSet()));
(这是假设您的国家/地区字段是字符串)
现在,您只需询问地图即可访问每个国家/地区的学生。
Set<Student> studentsInMyCountry = mapByCountry.get("TheBestCountryInTheWorld");
当然,也有一些方法可以像您要求的那样将原始列表转换为列表列表,但这将不太有用,因为那样您仍然不知道子列表中的学生属于哪个国家,除非再次进行评估。
添加回答
举报
0/150
提交
取消