在imbricated for循环中填充数组

时间:2014-01-09 19:15:43

标签: java arrays for-loop

我有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

                    }
                }

            }

非常感谢您的帮助

2 个答案:

答案 0 :(得分:3)

我只会使用ListsremoveAll方法。如果你真的需要一个数组,你总是可以在结果列表中调用方法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++)

为了保持一致性,您还需要做其他更改,但这是另一个讨论: - )