본문 바로가기

자바의 정석 정리

자바의 정석 - 14.2 스트림 14.2.1 스트림이란? Array, List, Map과 같은 데이터 소스를 추상화하여 데이터 소스가 무엇이던 간에 같은 방식으로 다룰 수 있게 해 주는 것 String[] strArr = {"aaa", "ddd", "ccc"}; List strLsit = Arrays.asList(strArr); Stream strStream1 = strList.stream(); Stream strStream2 = Arrays.stream(strArr); // 배열이든 리스트든 같은 방식으로 출력 // 메서드 참조 사용 strStream2.sorted().forEach(System.out::println); 스트림은 데이터를 읽기만할 뿐, 데이터 소스를 변경하지 않음 필요시에는 정렬된 결과를 컬렉션이나 배열에 담아서 반.. 더보기
자바의 정석 - 12.3 애너테이션(annotation) 12.3.1 애너테이션이란? 프로그램의 소스코드 안에서 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것 프로그램 자체에는 아무런 영향일 끼치지 않음 @Test // 이 메서드가 테스트 대상임을 테스트 프로그램에게 알림 public void method(){...} 해당 프로그램에 미리 정의된 종류와 형식으로 작성해야 의미가 있음 JDK에서 제공하는 표준 애너테이션은 주로 컴파일러를 위한 것임 12.3.2 표준 애너테이션 종류 @Override 메서드 앞에만 붙일 수 있음 조상의 메서드를 오버라이딩하는 것이라는걸 컴파일러에게 알리는 역할을 함 @Override void parentmethod() @Deprecated 더 이상 사용하지 않는 것을 권장한다는 의미임 @Deprecated int .. 더보기
자바의 정석 - 12.2 열거형(Enums) 12.2.1 열거형이란? 서로 관련된 상수를 편리하기 선언하기 위해 것임 class Card{ enum Kind {CLOVA, HEART, DIAMOND, SPADE}; enum Value {TWO, THREE, FOUR}; final Kind kind; final Value value } 여러 상수를 정의할 때 사용하면 유용함 열거형은 값과 타입을 관리하기 때문에 논리적인 오류를 줄일 수 있음 상수의 값이 바뀌더라도 기존의 소스를 다시 컴파일하지 않아도 됨 12.2.2 열거형의 정의와 사용 정의 enum 열거형이름 {상수명1, 상수명2,...}; // 예시 enum Direction {EAST, SOUTH, WEST, NORTH}; // 사용 class Unit{ Direction dir = Direc.. 더보기
자바의 정석 - 12.1 지네릭스(Generics) 12.1.1 지네릭스란? 다양한 타입의 객체를 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능임 장점 타입 안정성을 제공함 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해짐 12.1.2 지네릭 클래스의 선언 class Box{ T item; void setItem(T item){this.item = item;} T getItem() {return item;} } Box에서 T를 타입 변수(Type Variable)라 함 💡 T가 아닌 다른 것을 사용할 수 있으나, 상황에 맞게 의미있는 문자를 선택해야 함 타입 변수는 임의의 참조형 타입을 의미함 지네릭이 도입되기 이전의 코드와 호환을 위해 지내릭 클래스인데도 예전 방식으로 객체를 생성하는 것이 허용됨 Box b = new Box.. 더보기
자바의 정석 - 11.13 Collections 11.13.1 Collections Arrays가 배열과 관련된 메서드를 제공하는 것처럼, Collections는 컬렉션과 관련된 메서드를 제공함 11.13.2 컬렉션의 동기화 멀티 쓰레드(Multi-Thread) 프로그래밍에서는 하나의 객체를 여러 쓰레드가 동시에 접근할 수 있기 때문에 데이터의 일관성(Consistency)을 위해 공유되는 객체에 동기화(Syncronization)가 필요함 Vector와 HashMap과 같은 구버전의 클래스는 자체적으로 동기화 처리가 되어 있는데, 멀티 쓰레드 프로그래밍이 아닌 경우 불필요한 기능이 되어 성능 저하 요인이 됨 새로 추가된 ArrayList와 HashMap과 같은 컬렉션은 동기화를 자체적으로 처리하지 않고 java.util.Collections클래스의 .. 더보기
자바의 정석 - 11.12 Properties 11.12.1 Properties 💡 레거시하기 때문에 사용하지 않는 것을 추천함 Hashtable을 상속받아 구현한 것임 Hashtable은 키와 값을 (Object, Object)의 형태로 저장하는 반면에, Propertiest는 (String, String)의 형태로 저장하는 보다 단순화된 컬렉션 클래스임 더보기
자바의 정석 - 11.11 TreeMap 11.11.1 TreeMap 이진 검색 트리의 형태로 키와 값의 쌍으로 이루어진 데이터를 저장함 검색과 정렬에 적합한 컬렉션 클래스임 더보기
자바의 정석 - 11.10 HashMap과 Hashtable 11.10.1 HashMap과 Hashtable Hashtable보다 새로운 버전인 HashMap을 사용할 것을 추천함 키(key)와 해싱(hashing)을 동시에 사용하기 때문에 검색에 뛰어난 성능을 보임 💡 해싱이란 해시함수(Hash Function)를 이용해서 데이터를 해시테이블(Hash Table)에 저장하고 검색하는 기법임 equals()로 비교한 결과가 true임과 동시에 hashCode()의 반환 값이 같아야 같은 객체로 인식함 더보기