2011-10-03 71 views
0

我需要比较从表中检索数据的列表:使列表的副本

 // first click 

     // get list of data 
     originalList = getValue(columnX); 


     // copy 
     List<String> copy1 = new ArrayList<String>(originalList); 

     //sort 
     Collections.sort(copy1); 
     System.out.println("copy" + copy1); 

    // verify 
    assertEquals(copy1, originalList); //this is OK 

    //second click is done here 

    // copy 
    List<String> copy2 = new ArrayList<String>(originalList); 


    // sort 
    Collections.sort(copy2); 
    System.out.println("copy2" + copy2);=>copy2 give same values as copy1!!!it should not 

//验证 的assertEquals(COPY2,originalList); =>错

+0

ArrayList.clone? – mellamokb

+0

?这是什么意思?我创建的copy2给了我相同的值作为复制,它应该是其他值,因为我已经点击了第二次 – lola

+2

在复制和copy2之间,originalList不会改变...所以为什么* shouldnt *排序副本和copy2产生相同的结果? – claymore1977

回答

0

我想第一个assertEquals成功了,因为originalList中的数据已经排序了。排序copy1再次没有改变顺序,因此equals返回true。

第二次点击确实改变了订单(我认为列表现在是相反的顺序)。 因此第二个assertEquals失败 - originalListcopy2确实包含相同的元素,但顺序不同。

+0

不匹配,您有什么建议? – lola

+0

取决于你想要的。原来的问题(现在被编辑掉了)是:“我怎么能安全地做第二个副本?”答案是:在技术上你是这么做的,但是你的“安全”定义似乎与Java的定义不同。你的定义是什么? –

+0

第二个断言工作: – lola