首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Object ArrayList属性

Object ArrayList属性
EN

Stack Overflow用户
提问于 2014-01-29 18:11:33
回答 4查看 90关注 0票数 0

例如,我有一个对象的数组列表。它是一个具有以下属性的学生对象

代码语言:javascript
运行
复制
public Student(String name, String address)
{
  if (name == null)
     name = "";
  if (address == null)
     address = "";
  this.name = name;
  this.address = address;
  lastAssignedNumber++;//Starts at 1000
  studentNum = lastAssignedNumber;
  // at first no credits have been taken (so no grade points either)
  totalCredits = 0;
  totalPoints = 0.0;

}

假设我在这个数组列表中添加了多个对象。我想根据studentNum在数组列表中编辑一个对象。

让我们调用arraylist mylist:

我知道mylist.get(studentNum)不会工作,因为它得到了列表的索引。有没有办法在studentNum上编辑某个对象?

EN

回答 4

Stack Overflow用户

发布于 2014-01-29 18:13:27

与您的需求最匹配的是使用具有任何具体实现的Map接口。

那么键值对将是Id作为LongStudent object作为value

代码语言:javascript
运行
复制
Map<Long,Student> students= new HashMap<Long,Student>();

然后,您可以将其用作

代码语言:javascript
运行
复制
students.put(stu.getId(), student);

获取

代码语言:javascript
运行
复制
  Student st=  students.get(stu.getId());

否则你每次都会迭代

票数 0
EN

Stack Overflow用户

发布于 2014-01-29 18:13:37

假设我在找一个studentNum为32的学生

代码语言:javascript
运行
复制
for(Student s : mylist) {
  if(32 == s.getStudentNum) {
    theStudent = s;
  }
}

这是假设上面的数据结构,如果你想创建一个以studentNum为键,以学生对象为值的映射,这会更合适。

票数 0
EN

Stack Overflow用户

发布于 2014-01-29 18:14:23

您可以使用Map:

代码语言:javascript
运行
复制
Map<Integer, Student> students = new HashMap<>();

放入学生和id:

代码语言:javascript
运行
复制
students.put(studentNum, student);

并通过id获取学生:

代码语言:javascript
运行
复制
students.get(studentNum);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21427866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档