2011-10-03 4 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를) 확인을; => wrong

+0

ArrayList.clone? – mellamokb

+0

? 무슨 뜻이에요? 내가 만든 copy2는 나에게 copy와 같은 값을 주었고, 두 번째로 클릭했을 때 다른 값이어야한다. – lola

+2

copy와 copy2의 생성 사이에 originalList는 바뀌지 않는다. 그래서 왜 * shouldnt * sorting copy copy2는 같은 결과를 산출합니까? – claymore1977

답변

0

originalList의 데이터가 이미으로 정렬되었으므로 첫 번째 assertEquals이 성공한 것으로 생각됩니다. copy1을 다시 정렬해도 순서가 변경되지 않으므로 equals이 true를 반환합니다.

두 번째 클릭 의 순서를 변경했습니다 (목록이 역순 인 것으로 가정 함). 그러므로 두 번째 assertEquals은 실패합니다 - originalListcopy2은 동일한 요소를 다른 순서로 포함합니다.

+0

과 일치하지 않으며 무엇을 제안합니까? – lola

+0

당신이 원하는 것에 달려 있습니다. 최초의 질문 (지금 편집 됨)은 "어떻게하면 두 번째 사본을 안전하게 만들 수 있습니까?" 대답은 : 기술적으로 당신은했지만, 당신의 "안전"에 대한 정의는 자바의 것과 다릅니다. 당신의 정의는 무엇입니까? –

+0

작업 할 두 번째 어설 션 : – lola

관련 문제