Programming/Java 6

[Java]Vector, ArrayList, LinkedList의 차이

vector는 내부적으로 배열의 구조를 지니고 있습니다.그래서 인덱스로 요소에 접근할 경우 상수시간으로 접근 할 수 있죠.하지만, item들이 추가되거나 삭제를 할 때는내부적으로 임시 배열을 생성해서 복사한다음item들을 이동시키게 됩니다. 이런 경우, 비용이 많이 들게 되고 성능이 떨어지죠. 반면, list에서는item들과의 연결이 포인터로 되어 있어item의 추가와 삭제가 빠릅니다.하지만, item들을 검색하는 시간은 o(n)의 비용이 발생하게 됩니다. vector의 경우는 item들을 저장한 이후 변동이 별로 없다면 효과적이고list의 경우 item의 추가 삭제가 많을 경우 유용하다고 할 수 있겠습니다. Vector와 LinkedList가 위의 경우와 같다고 생각할 수 있습니다.단 , ArrayLi..

Programming/Java 2013.04.17

[Java]스톱워치를 구현하는 방법

스톱워치를 구현함에 있어서 스레드의 sleep함수를 이용해서 시간을 카운트하도록 설계를 했었다. 하지만 이와 같은 방법을 쓰게될 경우, 스레드틑 CPU로부터 할당 받은 시간만큼만 실행되게 됨으로 정밀하게 유효한 값을 가지기가 힘들다. 그러면 CPU로부터 유효한 시간을 유지하면서 시간을 재는 초시계를 구현하려면 어떻게 해야하는가....?? 생각외로 답은 간단했다. 답은 시스템 시간에 있었다. 스레드를 이용하여 이정 시간단위로 시스템 시간을 가져온다. 시간을 재기 시작한 시스템시간을 기록해 놨다가 스레드가 매번 시스템 시간을 가져와 그 차이로 스톱워치의 시간을 갱신하는 방법이다. CPU할당시간이 밀리더라도 시스템 시간을 가져와 갱신하기 때문에 스레드 sleep함수를 이용하여 시간을 갱신하는 것보다 더 정밀한..

Programming/Java 2012.11.14

[Java]자바 스윙에서 JFrame.EXIT_ON_CLOSE

자바에서 스윙으로 GUI를 구현하면 JFrame을 상속받아서 메인프레임을 구현하는 방법이 가장 일반적으로 사용되는 방법이다. 하지만 스윙을 사용하는 초보자들이 가장 많이 하는 실수가 EXIT_ONCLOSE를 지정 안 하는 것이다. 이를 지정하지 않으면 메인프레임을 닫았는데도 JFrame객체는 JVM에서 계속 살아서 실행된다. 즉 사용자에게 보여지는 View는 종료되었지만 프로그램은 계속 실행중인 상태가 된다. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 하지만 위와 같은 처리를 해주면 메인프레임을 닫을 때, 프로그램 또한 안정적으로 종료된다.

Programming/Java 2012.10.25