在每次迭代中单独创建java对象

时间:2017-10-08 07:37:05

标签: java arrays

public class Test{

    public void setMembersValues(List list){

        List<Member>  memberList = new ArrayList<Member>();

        for(Object o : list){

            String[] str = o.split("\n");

            if(str.equalsIgnoreCase("<member>")){

                /**I want to create separate member objects for each 
                   list iterration.But member refers same object.**/

                Member member = new Member();

                for(int i =0; i<str.length;i++){

                    if(str[i].equalsIgnoreCase("<member/>")){
                        memberList.add(member);
                        break;
                    }else{
                        if(str[i].equalsIgnoreCase("name"))
                            member.setName(str[i].split("//")[1]);
                    }else if(str[i].equalsIgnoreCase("Address")){
                        member.setAddress(str[i].split("//")[1]);
                    }
                }

            }

        }
    }
}

此处有两个列表,但只创建了一个成员对象。我想为每次迭代创建单独的成员对象,并将其添加到memberList。

我该怎么办呢?

2 个答案:

答案 0 :(得分:3)

  

我想为每次迭代创建单独的成员对象,并将其添加到memberList。

每次绕过内循环时,都需要创建一个新对象。您正在循环外创建一个Member并将其多次添加到列表中。

答案 1 :(得分:1)

您可以在for循环中移动您的Member实例:

        for(int i =0; i<str.length;i++){
            if(str[i].equalsIgnoreCase("<member/>")){
                memberList.add(member);
                Member member = new Member();
                break;

[被修改]