这是我第一次使用Java。我需要帮助根据属性唯一值将列表分配到列表中。
我正在从名为 Student
的 SQL 表创建一个对象,属性为 ID
、NAME
和 COUNTRY
package 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
的记录
提前致谢
最佳答案
您应该查看 map ,更具体地说是 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()));
(假设您的国家/地区字段是字符串)
现在,您只需查看 map 即可访问每个国家/地区的学生。
Set<Student> studentsInMyCountry = mapByCountry.get("TheBestCountryInTheWorld");
当然,也有一些方法可以将原始列表转换为您要求的列表列表,但这不太有用,因为这样您仍然不知道子列表中的学生属于哪个国家/地区,除非通过评估再次。
关于java - Java中的列表内列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52939960/