【问题标题】:Get an element from arrayList inside another class从另一个类中的arrayList中获取一个元素
【发布时间】:2016-08-14 01:35:08
【问题描述】:

我有一个 Staff 类,其中包含该特定员工的角色列表。我也有包含人员对象的人员列表。

如何从角色列表中获取特定类实例的元素?

我试过了:

staffList.get(0).getRolesList().get(0)

从staffList的第一个元素开始应该是rolesList的第一个元素,但它只是返回null。

我也试过了:

rolesList.get(staffList.get(0))
rolesList.getIndexOf(staffList.get(0).getRolesList.get(0)

全部返回null

如果我只是使用 get index 直接从角色列表中获取值,它将显示没有问题。

我认为它正在获取角色列表的一个版本,但不是该特定 Staff 对象中的那个版本

我在 roleList 中创建了一个新的 Staff Member 和一个角色,然后在我构造 Staff 对象时使用了该列表,因此使用该对象的 getRolesList 方法然后获取它应该从 roleList 中返回值的索引但是不是:

private List<Staff> staffList = new ArrayList();
ArrayList<Role> roleList = new ArrayList();
roleList.add(Role.DRIVER);
testDriver = new Staff("Mike", "Joy", roleList);
testStaffList.add(testDriver); 

GetRolesList() 代码

public List<Role> getRoleList() {
        return roleList;
    }

我基本上想从 testdriver 对象中的对象角色列表中获取存储的角色。

testDriver --> roleList --> Role.DRIVER(或任何角色)

【问题讨论】:

  • 正如我在最后一段代码中看到的,staffList 在任何时候都与其他对象无关。您是否想粘贴其他内容?
  • 你能粘贴getRolesList()函数的代码吗?如果没有您使用的代码的更多示例,目前还不清楚问题出在哪里

标签: java arrays arraylist


【解决方案1】:

(a) 我们没有看到将testDriver 添加到staffList 的代码行。

staffList.add( testDriver );

(b) 您在致电 getRolesList 时缺少括号。

(c) 你需要做一些基本的调试。在调试器或额外代码中,查看:

  • staffList 的大小
  • 员工 s = staffList.get(0)
  • 列出角色 = s.getRolesList()
  • roles 的大小

额外提示... 显然,您正在使用 enum 代替 Role。如果是这样,您应该考虑使用EnumSet 而不是List,以减少内存使用并加快执行速度。 EnumSetSet 的专门实现。更多讨论another Question。不属于您的问题,只是一个提示。

Set<Role> roles = EnumSet.of( Role.DRIVER , Role.MECHANIC );
Staff testDriver = new Staff( "Mike" , "Joy" , roles );

【讨论】:

    【解决方案2】:

    你能提供你的完整来源吗.. 这还不清楚。我想你想把你的员工对象添加到员工列表中。如果是的话

    Stafflist.add(new Staff("a","b",role list));
    

    添加所有你想要的 然后尝试获取..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      相关资源
      最近更新 更多