日期:2014-05-20  浏览次数:20721 次

java 引用的问题
现在有两个list
private List<GroupPurchaseItem> data = null; // 排序
private List<GroupPurchaseItem> dataDefault = null; // 默认顺序


构造方法中给他们赋值
this.data = data;
this.dataDefault = data;


接着我给data做了一个排序,Collections.sort(data, new SortByTimeDesc());
排完之后发下dataDefault的顺序也被排了....我不想dataDefault被改变,要怎么办呢


------解决方案--------------------
你2个引用指向同一个对象了,先拷贝下。


        public static void main(String[] args)throws IOException,ClassNotFoundException{
         List<Integer> a = new ArrayList<Integer>(3);
         a.add(1);
         a.add(3);
         a.add(2);
         List<Integer> b = new ArrayList(Arrays.asList( new Object[a.size()]));
         Collections.copy(b, a);
         Collections.sort(a);
         System.out.println(a);//123
         System.out.println(b);//132
        }