본문 바로가기

Java의 정석53

Iterator, Enumeration / Map 과 Iterator Iterator : 반복하다 ch11 - 22 Iterator, ListIterator, Enumeration Iterator : 주로 사용 ListIterator : 양방향 읽기 가능 / 잘 사용 하지 않음 Enumeration : 구버전 컬렉션에 저장된 데이터를 접근 할 때 사용하는 인터페이스 이다. [ Iterator 인터페이스의 메서드 ] Iterator 인터페이스의 메서드 에서 핵심 메서드는 딱 두가지 이다. 1) boolean hasNext() >> 확인 (true or false 반환) 2) Object next() >> 읽기 ( 데이터 반환 (Object) ) 두가지 이다. 참고로, Enumeration 인터페이스는 구버전 이다. 구버전의 코드를 확인하는 일이 있을 수도 있으니, 이정도만 .. 2023. 9. 20.
Stack 과 Queue의 활용 (스택 / 큐) ch11 - 19 ~ 21 스택과 큐 의 활용 (Stack & Queue) [ 스택 ] 스택의 활용 예 1) 수식 계산 ( (3 + 2) * 8 ) / 2 2) 수식 괄호 검사 3) 워드프로세서의 undo / redo (작업한것을 취소 / 직전 행동을 되돌리기) 4) 웹 브라우저의 뒤로 / 앞으로 첫 방문을 구글을 했다고 하고, 그 다음 방문을 네이버, 그 다음은 다음을 방문 했다고 치면, 스택의 그림은 아래와 같을것이다. 근데 이때, 웹 브라우저 에서 뒤로가기를 누르면 어떻게 될까 ? 또 하나의 스택을 사용 해서, 다음을 새로운 스택에 옮긴다. 그러면 현재 페이지가 네이버 가 될것 이고, 여기서 만약에 앞으로 가기 버튼을 누르면 새로운 스택 으로 옮긴 다음을 기존 스택에 다시 옮기는 개념 이다. 근데 .. 2023. 9. 19.
Stack / Queue (스택 / 큐) ch11 - 15 스택과 큐 (Stack & Queue) 스택 (Stack) : LIFO 구조. 마지막에 저장된 것을 제일 먼저 꺼내게 되는 구조 이다. LIFO 란 ? Last In First Out == 마지막에 넣은것을 제일 먼저 꺼낸다. 밑은 막히고, 위만 뚫린 상자 라고 생각 하면 된다. 0부터 넣었고, 1을 넣었고, 2를 마지막에 넣었다. 이것을 추출 하려면 2를 꺼내고, 1을 꺼내고, 0을 꺼내야 하는 구조 이다. 1 > 2 > 3 > 4 > 5 의 순서로 넣었다면, 5 > 4 > 3 > 2 > 1 의 순서로 꺼내야 한다는 의미 이다. 저장하는것을 push 라고 하고, 추출하는것을 pop 이라고 한다. 큐 (Queue) : FIFO 구조. 제일 먼저 저장한 것을 제일 먼저 꺼내게 된다. FI.. 2023. 9. 17.
LinkedList 와 ArrayList 의 비교 ch11- 12 LinkedList - 배열의 장단점 장점 : 배열은 구조가 간단하고 데이터를 읽는 데 걸리는 시간이 짧다. (접근 시간, access time 이 짧다) 첫번째 요소를 읽는것과 마지막 요소를 읽는 시간이 동일 하다. 만약, int 타입의 배열 [ ] 이라고 가정 하면, 요소 하나당 4byte를 차지하므로, 1은 0x100 2는 0x104 3은 0x108 4는 0x112 5는 0x116 일것이다. 3번째 요소를 가지고 오려면, 0x100 번지 주소에서 배열 요소의 크기 (int 타입 이니까 4byte) 에 index 를 곱하면 n번째 요소의 주소를 쉽게 구할 수 있다. 만약에 n번째 요소가 100번째 라고 했어도, 0x100 번지 + (4byte * 100) 을 하면 바로 해당 요소의 주.. 2023. 9. 17.
ArrayList와 Java API 확인 ch11 - 7 ArrayList List 인터페이스는 순서를 유지 하고, 중복을 허용 한다. List 인터페이스를 구현 받은 클래스들이 존재 한다. Vector은 오래된 클래스라서 저것과 유사한 클래스가 ArrayList 이다. 굳이 차이점을 뽑자면, Vector 클래스는 자체적으로 동기화를 지원하고, ArrayList는 자체적으로 동기화를 지원 하지 않는다. List 인터페이스를 구현 받은 클래스들은 모두, 데이터의 저장 공간으로 배열을 사용 한다. ch11 - 8 ArrayList의 메서드 위의 메서드는 ArrayList의 생성자 이다. 첫번째는 기본생성자 이고, 두번째는 매개변수로 어떤 컬렉션을 주면, 그 컬렉션 안에 저장 되어 있는 데이터를 ArrayList에 저장 할 수 있다. 세번째는 배열의.. 2023. 9. 17.
Collection, List, Set, Map ch11 - 3 Collection 인터페이스의 메서드 List 와 Set 인터페이스 에서 공통 부분을 뽑아낸 인터페이스가 있다. >> Collection 인터페이스. 기본적으로 데이터의 추가, 검색, 삭제 등의 메서드를 가진다. ch11 - 4 List 인터페이스 - 순서 O, 중복 O List 인터페이스를 구현받은 핵심 클래스는 2가지 이다. ArrayList 와 LinkedList 이다. Vector과 Stack은 컬렉션 프레임워크가 표준화 되기 이전의 오래된 클래스들 이다. (Vector 클래스는 ArrayList 클래스와 거의 유사 하다) 마찬가지로 객체 (데이터) 를 추가, 검색, 삭제 하는 메서드가 있다. 당연히, ArrayList 클래스는 List 인터페이스를 구현한 클래스 이고, List.. 2023. 9. 17.
컬렉션 프레임워크와 핵심 인터페이스 ch11 - 1 컬렉션 프레임워크 (collections framework) > 컬렉션 (collection) - 여러 객체 (데이터) 를 모아 놓은 것을 의미. > 프레임워크 (framework) - 표준화, 정형화된 체계적인 프로그래밍 방식. 프레임워크는 라이브러리 + 프로그래밍 방식을 강제 한다. 즉, 기능뿐만 아니라, 프로그래밍의 방식까지 제안 한다. 자유도가 떨어진다고 볼 수도 있지만, 중요한점은, 정해진대로만 하면 되니까, 프로그래밍의 생산성이 증가 하고, 유지보수가 용이해 진다. > 컬렉션 프레임워크 (collections framework) - 컬렉션 (다수의 객체) 을 다루기 위한 표준화된 프로그래밍 방식. 객체를 저장, 삭제, 검색, 정렬, .. 하는것을 "객체를 다룬다" 라고 한다. .. 2023. 9. 17.
Calendar 클래스 - 예제, Date 와 Calendar 간의 변환 ch10 - 4 ~ 5 Calendar 클래스 - 예제 - set() 메서드로 날짜와 시간 set 하기. void set(int field, int value) void set(int year, int month, int date) void set(int year, int month, int date, int hourOfDay, int minute) void set(int year, int month, int date, int hourOfDay, int minute, int second) set() 메서드들이 다양하게 오버로딩 되어 있다. - 날짜 지정 하는 방법. 월 (MONTH) 은 0 부터 시작한다. 주의 ! Calendar date1 = Calendar.getInstance(); date1.set.. 2023. 9. 3.
날짜와 시간, Calendar 클래스 ch10 - 1 ~ 3 날짜와 시간, Calendar 클래스 ch10 - 1 날짜와 시간 1. java.util.Date - 날짜와 시간을 다룰 목적으로 만들어진 클래스. (JDK 1.0) 만들고 보니, 여러 단점이 발견 됬다. - Date의 메서드는 거의 deprecated 되었지만, 여전히 사용 되고 있다. deprecated : 중요도가 떨어져 더 이상 사용되지 않고 앞으로는 사라지게 되는 것을 의미. (컴퓨터 시스템 기능 등) 2. java.util.Calendar - Date 클래스를 개선한 새로운 클래스. (JDK 1.1) 여전히 단점이 존재 했다. 단점이 있는데도 표준 클래스 였기 때문에, 오래전부터 최근까지 오랫동안 사용 되고 있다. 3. java.time 패키지 - Date와 Calend.. 2023. 9. 3.