java - 从另一个类中的 arrayList 获取元素

标签 java arrays arraylist

我有一个 Staff 类,其中包含该特定员工的角色列表。我还有 StaffList 来保存员工对象。

如何从 RolesList 中获取该类的特定实例的元素?

我已经尝试过:

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 直接从 RolesList 获取值,则不会显示任何问题。

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

我在 roleList 中创建了一个新的员工和角色,然后在构造员工对象时使用了该列表,因此使用该对象的 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(或者任何角色恰好是什么)

最佳答案

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

staffList.add( testDriver );

(b) 您在调用 getRolesList 时缺少括号。

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

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

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

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

关于java - 从另一个类中的 arrayList 获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38938441/

相关文章:

java - 套接字异常 : socket closed in accept() on ServerSocket

javascript - 将货币紧凑表示法(例如 '$1.5k' )转换为整数(例如 1500)

arrays - 根据索引排除 Array 的元素 (Julia)

c - 数组声明的非常奇怪的行为

java - 我的 ArrayList 只返回空值

java - 查找两个 ArrayList 之间的交集

java - 如何在java中使用列表或数组类型的接口(interface)?

java - jUnit、嵌入式 Tomcat 和 Hibernate java.lang.ClassCastException

java - 使用 AsynchronousSocketChannel 时出现 ReadPendingException

arraylist - 具有字段ArrayList的数据类副本-更改复制的类的ArrayList更改原始