본문 바로가기

멀티캠퍼스 풀스택 과정/Java의 정석55

자바의 정석8-3 스택과 큐/Iterator, ListIterator, Enumeration 스택과 큐(Stack & Queue) 스택(Stack): 마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 LIFO 구조 큐(Queue): 처음에 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO 구조 -> 순차적으로 데이터를 추가하고 삭제하는 스택에는 ArrayList와 같은 배열기반의 컬렉션 클래스 적합, 큐에는 데이터의 추가와 삭제가 쉬운 LinkedList로 구현하는 것이 적합(큐는 항상 첫 번째 저장된 데이터를 삭제하므로, 배열은 첫 번째 데이터 삭제 어려움) Stack & Queue의 메서드 - Stack은 클래스가 있어서 객체 생성 가능 Stack st = new Stack( ); - Queue는 인터페이스로 정의되어 있어서 객체 생성 불가능 Queue q = new Queue( ); xx St.. 2022. 1. 10.
자바의 정석8-2 ArrayList, LinkedList ArrayList - ArrayList는 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 동일! - Vector는 ArrayList와 달리 자체적으로 동기화 처리가 되어 있음(Vector와 ArrayList의 차이는 동기화 유무) - List인터페이스를 구현해서, 저장순서가 유지되고 중복을 허용한다. - 데이터(객체)의 저장공간으로 배열을 사용한다. (배열기반) - 이름에 List가 붙으면 리스트인터페이스를 구현한다는 의미 + 순서, 중복 허용 - ArrayList를 생성할 때, 저장할 요소의 개수를 고려해서 실제 저장할 개수보다 약간 여유 있는 크기로 하는 것이 좋다.(자동적으로 크기가 늘어나긴 하지만 처리시간이 많이 소요됨) - 클래스 안에 객체 배열(Object [ ]) 포함 -> 모든 종.. 2022. 1. 8.
자바의 정석8-1 컬렉션프레임워크(List, Set, Map) 컬렉션프레임워크(Collections Framework) - 컬렉션(collection): 여러 객체(데이터)를 모아 놓은 것을 의미 - 프레임워크(framework): 표준화, 정형화된 체계적인 프로그래밍 방식 (자바는 spring) - 컬렉션 프레임워크(collections framework) - 컬렉션(다수의 객체)을 다루기 위한 표준화(틀)된 프로그래밍 방식 - 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스 제공(객체를 다룬다 -> 저장, 삭제, 검색, 정렬) - java.util패키지에 포함 - 컬렉션 클래스(collection class) - 다수의 데이터를 저장할 수 있는 클래스(예 Vector, ArrayList, HashSet) 컬렉션 프레임웍의 핵심 인터페이스 1) List 2) .. 2022. 1. 8.
자바의 정석7-2 형식화 클래스(DecimalFormat,SimpleDateFormat) 형식화 클래스 - java.text패키지의 DecimalFormat(10진수 숫자), SimpleDateFormat(날짜 형식화) - 형식화: 숫자와 날짜를 원하는 형식으로 출력 (숫자, 날짜 -> 형식 문자열) - 반대로 형식 문자열에서 숫자와 날짜를 뽑아내는 기능도 가능 (형식 문자열 -> 숫자, 날짜) 1) DecimalFormat - 숫자를 형식화하는 데 사용함 - 숫자 데이터를 정수, 부동소수점, 금액 등의 다양한 형식으로 표현할 수 있음 - 숫자 -> 일정한 형식의 문자열로 변환 - DecimalFormat으로 객체 생성 한 뒤에 format( )을 사용 - 10진수 -> 지수표현으로 E는 10을 나타냄. E6은 10의 6제곱 - 반대로 일정한 형식의 텍스트 데이터(문자열)를 숫자로 쉽게 변환.. 2022. 1. 8.
자바의 정석7-1 날짜와 시간클래스(Calendar, Date) Calendar와 Date java.util.Date - 날짜와 시간을 다룰 목적으로 만들어진 클래스(JDK1.0) - Date 메서드는 거의 deprecated(앞으로 사용x)되었지만, 여전히 쓰이고 있다. java.util.Calendar - Date클래스를 개선한 새로운 클래스(JDK1.1) 여전히 단점이 존재 java.time패키지 - Date와 Calendar의 단점을 개선한 새로운 클래스들을 제공(JDK1.8) - Date와 Calendar의 단점은 항상 날짜와 시간을 같이 쓰는 것! Calendar클래스 - 추상 클래스이므로 직접 객체를 생성할 수 없고, getInstance( )를 통해 구현된 객체를 얻어야 한다. Calendar cal = new Calendar(); // 에러!!! 추상.. 2022. 1. 8.
자바의 정석6-4 오토박싱 & 언박싱 오토박싱 & 언박싱 int(기본형) -> Integer(래퍼클래스:참조형): 오토박싱(Auto boxing) Integer(래퍼클래스:참조형) -> int(기본형): 언박싱(un boxing) 컴파일러가 자동으로 래퍼클래스의 객체인 Integer를 intValue( )메서드를 사용해서 기본형으로 바꾸고 기본형 i와 더해줌(언박싱) -> 자바의 기본원칙이 변한 게 아니라 컴파일러가 자동으로 변환해주는 기능이 추가된 것 - 기본형의 값을 객체(래퍼클래스)로 자동변환하는 것을 오토박싱, 그 반대는 언박싱 ArrayList list = new ArrayList(); // ArrayList는 객체만 저장 가능 // 아래 두 코드 동일함 //list.add(new Integer(100)); // list에는 객체만.. 2022. 1. 7.