[질문] ArrayList remove질문 다시 한번요..
꿈
네이버에 질문을 올렸는데, 수다님이 답변을 올리셨는데요,
제가 질문을 조금 애매하게 쓴게 아닌가 싶어서 다시 올립니다..
public void removebelowlimit(arraylist sample, double limit)이라는 메소드를 사용해서
sample array list에 저장되어 있는 글자 중 limit 밑에 있는 글자를 지워야 합니다..
만약에 sample이라는 array list에
[a,b,c,d,e,f,g,h] a~h까지의 글자가 저장되어 있고,
double limit이 4.3라고 하면,
[a,b,c,d,]이렇게 나와야 합니다..
public void removebelowlimit(arraylist sample, double limit)
{
arraylist temp = new arraylist();
temp = sample;
int l = (int) limit;
while(l temp.size())
{
temp.remove(l);
l++;
}
system.out.println(temp);
}
위에 코드가 first라는 class파일에 들어가는 코드입니다.
l--;를 했는데 arrayindexoutofbound 뜨더군요..
밑에 코드는 클라이언트 코드입니다..
client
import java.util.*;
public class test
{
public static void mian(stringp[]args);
arraylist sample = new arraylist();
double limit = 3.4;
for(int i = 0; i 10; i++)
{
sample.add(on);
}
first user1 = new first(); //first는 class파일 이름입니다
user1.removebelowlimit(sample, limit);
}
}first안에 있는 loop코드 맞는거 아닌가요?
[a,b,c,d,e,f,g,h]랑 limit = 4.3으로 하면
output이 [a,b,c,d,f,h]입니다..
리스트에서 4번재에 있는 단어인, e를 뺀 다음 f를 건너뛴후 g를 지우고 도 h를 건너뜁니다..
혹시나 해서 temp.set(l, );
이렇게 했더니 [a,b,c,d, , , ,]이렇게 나옵니다..
set은 잘되는데 왜 remove만 이리 속을 썩이는걸까요...
해결책 주실뿐 안계신가요~
-
당나귀
마지막요소부터 삭제해 나가던가... 아니면삭제하면서 index를 하나씩 감소시켜주어야 합니다.
-
빛다
이건 말이죠... 삭제할때마다 각 요소의 순서가 변경되기 때문입니다. 예를들어 123456789를 삭제하신다면 아마도 2468로 건너뛰면서 삭제될겁니다.
-
연블랙
제가 질문을 잘못 이해했었네요.. 수정하였습니다..