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

时间:2016-08-14 01:35:09

标签: java arrays arraylist

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

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

我试过了:

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

哪个应该是staffList的第一个元素中的rolesList的第一个元素,但它只是ruturns null。

我也尝试过:

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

全部返回null

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

我认为它正在获取rolesList的一个版本,但不是该特定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 - &gt; roleList - &gt; Role.DRIVER(或角色恰好是什么)

2 个答案:

答案 0 :(得分:0)

(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 );

答案 1 :(得分:0)

你能全力以赴吗? 那不清楚。我想你想把你的员工对象添加到员工列表中..如果是

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

添加你想要的一切 然后试着去......