java - Java中的列表内列表

标签 java sql

这是我第一次使用Java。我需要帮助根据属性唯一值将列表分配到列表中。 我正在从名为 Student 的 SQL 表创建一个对象,属性为 IDNAMECOUNTRY

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/

相关文章:

c# - 如何在 DataColumn.Expression 中使用 IF/ELSE 或 CASE?

java - Eclipse ctrl+click 指的是错误的行

java - quartz 表每小时一次

sql - 使用PL/SQL函数获取员工薪酬记录

php - 这个显示特定用户最近发布的帖子的功能有什么问题?

c# - MS SQL nvarchar id 字段包含空格

sql - 如何使用 TQuery 和 Oracle SQL 语法进行变量赋值和参数?

java - 基本java中存在导入、类困惑

java - 使用数据库连接池的开销

java - cucumber Java : Features File Mapping to Step Definitions