728x90

 

Cursor 개념

 SQL문을 처리한 결과 집합을 가리키는 개념으로

일종의 포인터(C 포인터 개념과 유사하다고 함)

 

자바하는데 왜 뜬금없이 SQL이 나오나 생각이 들텐데 필자도 그렇다...

여튼 아래는 인텔리제이에서 파보다보니까 cursor가 나오게 됐고 "기준점"정도로 이해하면 될 것 같다

 

 

1.listIterator(int index) : iterator를 사용할 컬렉션의 해당 인덱스번호부터 값을 가져온다

// 해당 변수의 1번 인덱스부터 받아오기
ListIterator<Student> li2 = al.listIterator(1);

 

2.hasNext()는 while문으로 한번 돌리고 나면 기준점이 끝으로 가있어 다시 돌려도 의미x

while(li.hasNext()){
    System.out.print(li.next()+" "); // a(0점) a(1점) a(2점) a(3점) a(4점)
}
// hasNext() 두번째 돌리면 처음부터 다시 가는게 아니라 이미 끝에 있기에 의미없음
while(li.hasNext()){
    System.out.print(li.next()+" "); // 출력x
}

 

3.출력x던 hasNext()를 hasPrevious()를 쓰면 다시 출력이 된다

// hasNext() 두번째 돌리면 처음부터 다시 가는게 아니라 이미 끝에 있기에 의미없음
while(li.hasNext()){
    System.out.print(li.next()+" "); // 출력x
}
System.out.println();
while(li.hasPrevious()){
    System.out.print(li.previous()+" "); // a(4점) a(3점) a(2점) a(1점) a(0점)
}
System.out.println();
// hasPrevious()로 앞으로 돌렸기에 기준점이 앞으로 와있어 hasNext() 다시 작동
while(li.hasNext()){
    System.out.print(li.next()+" "); // a(0점) a(1점) a(2점) a(3점) a(4점) 
}

 

원데이터인 ArrayList인 al에 add하면 추가값이 잘 나오는데 ListIterator인 li2에 add하면 값이 while+hasNext()에서 안나온다. 근데 디버깅하면 안에 size도 그렇고 값이 추가된 것 같이 나오는데 이것저것 해봤지만 미스테리

아직까지 왜 5,6이 추가 안됐는지는 미지수고 더 파보다간 아무것도 못할 것 같아서

나중에 다시보기로  하자

 

 

 

728x90
반응형

+ Recent posts