日期:2014-05-20 浏览次数:20894 次
public class People {
    public String name;
    public String sex;
    public People(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }
}
import java.util.ArrayList;
import java.util.List;
public class Service {
    public List<People> getList(List<People> list) {
        List<People> l1 = new ArrayList<People>();
        People p = new People("123", "男");
        for (People p1 : list) {
            p.name = p1.name;
            p.sex = p1.sex;
            System.out.println(p.name + " " + p.sex);
            l1.add(p);
        }
        return l1;
    }
}
import java.util.ArrayList;
import java.util.List;
public class Test {
    public static void main(String[] args) {
        List<People> l = new ArrayList<People>();
        l.add(new People("aaa", "男"));
        l.add(new People("bbb", "女"));
        List<People> result = new Service().getList(l);
        for (People p : result) {
            System.out.println(p.name + " " + p.sex);
        }
    }
//参考:当修改p属性后,list中的元素属性也会变化
import java.util.*;
class People 
{
    public String name;
    public String sex;
    public People(String name, String sex) 
    {
        this.name = name;
        this.sex = sex;
    }
    public String toString()
    {
        return this.name+"-"+this.sex;    
    }
}
class Test
{
    public static void main(String []args)
    {
        People p = new People("aa","AA");
        List<People> list = new ArrayList<People>();
        list.add(p);
        System.out.println(list);
        
        p.name = "bb";//注意:当修改p属性后,list中的元素属性也会变化
        list.add(p);
        System.out.println(list);
    }
}
------解决方案--------------------
People p = new People("123", "男");这句代码放到for循环中,就可以得到你想要的结果了,至于什么原因,给你点提示,对象与引用的问题,两个引用指向同一个对象,那么这两个引用就有相同数据了。仔细想想。。
------解决方案--------------------