[Java] 컬렉션 프레임웍 (5) - HashSet, TreeSet
·
🗨️ Language/Java
HashSet HashSet과 TreeSet은 이름 그대로 Set인터페이스를 구현하였기 때문에 순서가 없고 중복을 허용하지 않는다. 일반적으로는 HashSet을 사용하는 것이 가장 일반적이다. 또한, 순서를 유지하려면 LinkedHashSet클래스를 사용하면 된다. TreeSet은 범위 검색과 정렬에 유리한 컬렉션 클래스이다. 그렇기에 HashSet보다 데이터 추가나 삭제에 시간이 더 소요된다. HashSet의 주요 메서드 생성자 int initialCapacity는 HashSet의 초기 용량을 지정해주는 것이다. float loadFactor은 언제 HashSet의 용량을 두배 증가할지 지정해주는 것이다. 예를 들어 loadFactor에 0.8을 입력하면 HashSet의 용량이 80프로 차면 용량이 두..
[Java]컬렉션 프레임웍 (3) - Stack & Queue
·
🗨️ Language/Java
스택과 큐 (Stack & Queue) ▶ 스택(Stack) : LIFO구조. 마지막에 저장된 것을 제일 먼저 꺼내게 된다. 스택은 밑이 막힌 상자이다. 상자에 0, 1, 2를 순서대로 넣게 되면 꺼낼 때는 마지막에 넣었던 2, 1, 0 순서로 꺼내게 된다. 이러한 구조를 LIFO(Last In First Out)구조라고 한다. 스택의 특징은 저장한 순서와 추출하는 순서가 반대인것이 특징이다. 스택에서는 저장을 push, 추출은 pop 이라고 한다. ▶ 큐(Queue) : FIFO구조. 제일 먼저 저장한 것을 제일 먼저 꺼내게 된다. 큐는 양끝이 뜷린 상자이다. 상자에 0, 1, 2를 순서대로 넣고, 꺼낼 때도 0, 1, 2 순서대로 꺼내게 된다. 이러한 구조를 FIFO(First In First Out..
[Java]컬렉션 프레임웍 (2) - ArrayList, LinkedList
·
🗨️ Language/Java
ArrayList ArrayList는 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 동일하다. ArrayList와 달리 Vector는 자체적으로 동기화 처리가 되어 있다. List인터페이스를 구현하므로, 저장순서가 유지되고 중복을 허용한다. 데이터의 저장공간으로 배열을 사용한다. (배열 기반) Vector클래스의 소스 코드를 보면 객체를 담기 위한 배열 타입으로 Object[]를 사용한다. 즉, 최고 조상인 Object클래스를 사용해 모든 종류의 객체를 저장 할 수 있다. (다형성) ArrayList의 메서드 생성자 ArrayList() 기본 생성자 ArrayList(Collection c) 매개변수로 Collection을 주면 해당 Collection을 저장하는 ArrayList를 생성한다...
[Java]형식화 클래스
·
🗨️ Language/Java
형식화 클래스 ▶ 형식화 클래스는 java.text 패키지에 포함되어 있음 ▶ 숫자, 날짜, 텍스트 데이터를 일정한 형식에 맞게 표현할 수 있는 방법을 객체지향적으로 설계하여 표준화 ▶ 형식화 사용될 패턴을 정의 - 데이터를 정의된 패턴에 맞춰 형식화할 수 있을 뿐만 아니라 역으로 형식화된 데이터에서 원래의 데이터를 얻어낼 수도 있음 - 패턴을 정의하는 것이 전부라고 해도 과언이 아님 DecimalFormat DecimalFormat은 숫자(10진수)를 형식화할 때 사용한다. ( 숫자 → 형식 문자열 ) 위 코드는 double형의 number을 지수 형식으로 형식화하는 코드이다. 또한 위 코드와 같이 특정 형식의 문자열을 숫자로 변환할 때도 사용한다. (형식 문자열 → 숫자) 원래는 문자열을 숫자로 변환..
[Java]Calendar클래스
·
🗨️ Language/Java
날짜와 시간 ▶ java.util.Date - 날짜와 시간을 다룰 목적으로 만들어진 클래스 (JDK 1.0) - Date의 메서드는 거의 deprecated(사용안함) 되었지만, 여전히 쓰이고는 있다. ▶ java.util.Calendar - Date클래스를 개선한 새로운 클래스(JDK 1.1). 여전히 단점이 존재 ▶ java.time 패키지 - Date와 Calendar의 단점을 개선한 새로운 클래스들을 제공(JDK 1.8) - Date와 Calendar의 단점이었던 날짜와 시간을 따로 다룰 수 있다. ( LocalDate, LocalTime, LocalDateTime ) Calendar클래스 Calendar클래스는 추상 클래스이므로 getInstance()를 통해 구현된 객체를 얻어야 한다. 위 코..
[Java]StringBuffer 클래스, StringBuffer 메서드
·
🗨️ Language/Java
StringBuffer클래스 StringBuffer는 String처럼 문자형 배열(char [])을 내부적으로 가지고 있다. 그러나, String과 달리 내용을 변경할 수 있다. (mutable) 위 예제처럼 StringBuffer는 새로운 객체를 생성해서 주소를 바꾸는 것이 아닌, 그냥 append()를 통해서 자기 자신의 내용을 변경할 수 있다. 하지만 배열은 길이를 변경이 불가능하다. 배열의 공간이 부족하면 새로운 배열을 생성해야 한다. 만약에 길이가 5인 arr배열에서 append()를 통하여 6을 추가하려고 한다면, 배열의 길이가 부족하기에 새로운 배열 객체가 생성이 되고, arr에있는 내용이 새로운 배열에 복사가 된다. 그리고, arr은 기존의 객체주소를 버리고, 복사된 새로운 배열의 주소를 ..
[Java]hashCode(), toString(), Object클래스, equals()
·
🗨️ Language/Java
hashCode() 객체의 해시 코드(hash code)를 반환하는 메서드 Object클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환하는 메서드이다. Object클래스의 hashCode를 확인해보면 native라는 것이 달려있고, 메서드의 내용 또한 존재하지 않는다. native는 OS가 가지고 있는 메서드이다. 주로 C언어로 작성이 되어있는 경우가 많다. 즉 내용이 없는것은 이미 C언어로 작성되어있는 메서드를 호출하는 것이기 때문에 내용이 없는 것이다. 그리고 equals()를 오버라이딩하면, hashCode()도 오버라이딩해야 한다. equls()의 결과가 true인 두 객체의 해시 코드는 같아야 하기 때문이다. 이렇게 위 코드처럼 equls가 ture로 확인이 되면 str1과 s..
[Java]예외처리 (4) - 사용자 정의 예외, 예외 되던지기, 연결된 예외
·
🗨️ Language/Java
사용자 정의 예외 만들기 직접 예외 클래스를 정의할 수 있다. 조상은 Exception과 RuntimeException 중에서 선택 표준 예외 클래스로도 많은 예외 상황을 표현할 수 있다. 하지만 그렇지 않은 경우도 있을 것이다. 이런 때는 직접 예외를 만들면 된다. 예외를 만들기 전에 해야 할 것은 자신의 예외를 checked로 할 것인가? unchecked로 할 것인가를 정해야 한다. 그 기준은 모호하지만 기준이 없는 것도 아니다. API 쪽에서 예외를 던졌을 때 API 사용자 쪽에서 예외 상황을 복구할 수 있다면 checked 예외를 사용한다. checked예외는 사용자에게 문제를 해결할 기회를 주는 것이면서 예외처리를 강제하는 것이다. 하지만 checked 예외를 너무 자주 사용하면 API 사용자..
[Java]예외처리 (3) - 예외 발생, 예외 선언, finally블럭
·
🗨️ Language/Java
예외 발생시키기 1. 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음 Exception e = new Exception(" 고의로 발생시켰음 "); 2. 키워드 throw를 이용해서 예외를 발생시킨다. throw e; 위 예제 try문에서 Exception e= new Exception()을 통해 예외 객체를 만든 다음 키워드 throw를 이용해서 예외를 발생한다. 그러면 catch블럭에서 객체와 동일한 예외를 잡으면 고의로 발생한 예외를 catch에서 처리할 수 있다. 이렇게 두 문장을 한 문장으로 합치면 throw new Exception("고의로 발생시켰음.");이 된다. checked예외, unchecked예외 checked예외 (Exception과 그 자손) : 컴파일러가 ..
[Java]예외처리 (2) - try-catch문, printStackTrace()와 getMessage()
·
🗨️ Language/Java
[Java]예외처리 (1) - 프로그램 오류, 예외 클래스의 계층구조 프로그램 오류 컴파일 에러(compile-time error) : 컴파일 할 때 발생하는 에러 런타임 에러(runtime error) : 실행 할 때 발생하는 에러 논리적 에러(logical error) : 작성 의도와 다르게 동작 컴파일 에러는 ja pids.tistory.com try-catch문 try-catch문의 문법은 위 코드와 같다. try구문에 코드를 작성하고, catch구문에서 오류가 발생하는 것을 처리하는 코드를 작성한다. 예를 들어, try구문에서 쇼핑을 하는 코드를 작성했다면, catch1에서 돈이 부족할 때 에러를 처리, catch2에서 물건이 부족할때 에러를 처리, catch3에서 가게가 문 닫았을 때 에러를 ..
Kyle99
'자바의정석' 태그의 글 목록