我有2个成员阵列 - 一个填充,另一个没有。 我有一个包含所有成员的列表。 我需要用不在第一个数组中的成员填充第二个数组。
我尝试了这个,但我得到了一个outboundexception(我对纯算法非常糟糕:()
Member[] busyMember= getBusyMember();
List<Team> allMembers= new ArrayList<Team>(jsonParsed.getAllElement());
Member[] availableMembers= new Member[allMembers.size()-busyMembers.length];
for (int i= 0; i<allMembers.size(); i++) {
Team t = allMembers.get(i);
long memberId = t.getMember().getId();
for (int j= 0 ; j<busyMember.length; j++) {
if (memberId != busyMember[j].getId()) {
availableMembers[i]=t.getMember();
//outboundexception here
}
}
}
非常感谢您的帮助
答案 0 :(得分:3)
我只会使用Lists
和removeAll
方法。如果你真的需要一个数组,你总是可以在结果列表中调用方法toArray(T[])
。
List<Member> busyMember= Arrays.asList(getBusyMember());
List<Team> allMembers= new ArrayList<Team>(jsonParsed.getAllElement());
List<Member> availableMembers = new ArrayList<Member>();
for(Team t : allMembers){
availableMembers.add(t.getMember());
}
availableMembers.removeAll(busyMember);
答案 1 :(得分:2)
假设allMembers
的元素多于busyMember
,则只需更改语句
for (int i= 0; i<allMembers.size(); i++)
到
for (int i= 0; i<availableMembers.size(); i++)
为了保持一致性,您还需要做其他更改,但这是另一个讨论: - )