gpt4 book ai didi

java - 在 ArrayList 中搜索对象

转载 作者:搜寻专家 更新时间:2023-10-31 19:41:04 24 4
gpt4 key购买 nike

我是 Java 的新手,正在为我的编程类(class)构建一个应用程序,用户可以在其中输入、删除、搜索或编辑学生列表(一个由整数 ID 号、字符串姓氏组成的对象,和双 GPA)。到目前为止,我已经成功地允许用户输入、删除或编辑条目。现在,100 多名学生的列表在一个 ArrayList 中(每个学生对象都带有三个参数)。

我的问题是,我不知道允许用户根据 ID 号、姓氏或 GPA(以及将来可能的 GPA 范围)搜索特定学生的有效方法。我一直在研究 Big-O 表示法,并且想使用二进制搜索,因为如果学生列表继续增长,这将是一个很好的实践和更好的选择。到目前为止,对于二进制搜索,我们使用带有 while 循环的高/低/中方法(如果这能表明我当前的技能水平的话)。

所以这是我的问题:

根据此标准搜索特定学生的有效方法是什么?我不是在寻找代码或解决我的困境的答案。我真的在寻找 Java 程序员用来做这样的事情的技术或技巧的名称,特别是如果这些技术可以与其他面向对象的编程语言一起使用的话。

最佳答案

我建议查看 HashMap数据结构。它允许您将元素存储在映射到某个键的集合中,以便稍后可以通过相同的键检索它们。在您的示例中,您可以使用不同的 HashMap 来搜索不同的字段。 HashMap 的键是字段(即:ID、姓氏或 GPA),值是相应的学生。对于不区分大小写的搜索,请确保在保存对象和检索对象之前将键(姓氏)转换为小写。

存储ID:

Map<String, Student> idToStudent;

key: "23213233", value: "某学生";

考虑到重复的名字或gpa,然后使用类型的 map :

Map<String, List<Student>> lastNameToStudents;

键:“smith”,值:[“John Smith”、“Bob Smith”等]

Map<Double, List<Student>> gpaToStudents:

key: "2.4", value: ["Student 1", "Student 2", etc];

请注意,为简洁起见,我使用学生姓名的字符串表示形式,但实际上它们代表 Student 实例。

关于java - 在 ArrayList 中搜索对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9170108/

24 4 0