2010-11-24 7 views
-1

안녕하세요 저는 아래 코드에서 n--;을 작성해야합니까?arraylist의 크기를 줄입니다.

 int n = pointList.size(); 
    for(int i=pointList.size()-1;i>=0;i--){ 
     for(int j=0;j<list.size();j++){ 
      if(pointList.get(i).equals(list.get(j))){ 
       pointList.remove(i); 
       n--; 
      } 
     } 
    } 

또한 list는 arrayList입니다. 덕분에 .

+4

젠체하는, 당신이 원하는 것에 대한 자세한 정보를 작성해야합니다. – Seva

+0

내부 ('j') 루프의 다음 반복에서'pointList'의'ith' 요소에 접근하기 때문에'ith' 요소를 제거한 후에'j'를 통해 루프를 멈춰야합니다 ... –

답변

6

ArrayList은 고정 크기로 시작하고 더 큰 크기가 필요한 경우에만 크기가 조정되는 배열로 지원됩니다. 아는 한, ArrayList의 백업 저장소 크기를 줄이면됩니다. trimToSize()

저장소 크기가 중요한 경우 대신 LinkedList을 사용하는 것이 좋습니다.

참고 : 제거 ArrayList를가 그것의 크기마다 감소하기 때문에

pointList.removeAll(list); 
+0

제대로 읽지 못했습니다. list와 pointList는 다른 것들입니다. –

+2

@ Paul : 어떻게 그렇게? 변수 이름에서 두 가지 모두 목록이고 [documentation] (http://download.oracle.com/javase/6/docs/api/java/util/Collection.html#remove%28java.lang.Object% (@ = null : get (i) == null : o.equals (get (i)))' – Powerlord

+2

@Paul (Collection)의'remove' 메소드의' : "다른 것들"은 무엇을 의미합니까? 목록의 요소는 모두 같은 유형의 요소입니다. 그리고 목록에있는 pointList에서 모든 요소를 ​​제거하려고합니다. – scheffield

0

아니요, 아니요, n은 어디에도 읽히지 않습니다.

저는 개발자가 debug.print 문에서 n을 사용하거나 assertion에서 n을 사용하는 방법을 추가 한 초기 버전부터 생각해 봅니다.

+1

나는 더 이상 n을 함축적으로 사용한다고 생각합니다. 그러나 pointlist.size는 조정 된 크기를 반환하기 때문에 (이상하게 구현되지 않으면 "제거"가 크기를 조정합니다.) n을 사용하여 추적 할 필요가 없습니다. –

+0

-1은 어디에서 왔습니까? 그리고 왜? – Daniel

0

정말 여기에 질문이 없으므로 나는 추측을 할 것입니다. 내 생각에 int n = pointList.size();의 선언은 중복됩니다. 항상 pointList이므로 크기를 알 수 있습니다. 또한 나는 동시 수정 예외를 던질 것이라고 내기를 기꺼이합니다.

0

: 내가 제대로 코드를 읽고 있어요 경우

, 당신은 그냥이 대신에 게시 된 모든 코드를 대체 할 수있다 n을 전혀 사용할 필요가없는 항목.

각 반복 한 후 다음 작업을 수행하는 경우,이 같은 결과를 얻을 것이다 :

pointList.remove (pointList.size를() - 1); 분명히 배열은 0

0

확인을 시작하기 때문에

-1 나는 당신이 일을 n까지에 저장된 pointList의 크기를 유지하려는 것으로 추측이있다. 이 경우 n을 줄여야합니다. 그러나 double for 루프 다음에 n을 간단하게 지정할 수 있습니다.

+0

왜 누군가가 이것을 downvote 했습니까?그것은 완전히 맞습니다. 나는 그것을 0으로 되돌 리려고 upvoted. – Jay

관련 문제