본문 바로가기

Java의 정석53

타입 변수 / 제네릭스 용어 / 제네릭 타입과 다형성 타입 변수 란 ? 1. 클래스를 작성 할 때, Object 타입 대신에 타입 변수 (E) 를 선언 해서 사용. 보통 변수명은 Type을 의미하는 T 또는 Element를 의미하는 E로 작성 한다. 2. 타입 변수에 대입 하기 객체를 생성 할 때, 타입 변수 (E) 대신에 실제 타입을 지정 (대입) 한다. 타입 변수 대신에 실제 타입이 지정 되면 형변환이 생략 가능 하다. 예시 ) ArrayList tvList = new ArrayList(); //참조변수 오른쪽 //생성자 왼쪽 그러면 아래와 같이 변하게 된다. 제네릭스 용어 란 ? 1. Box 제네릭 클래스. 'T 의 Box' 또는 T Box' 라고 읽는다. 2. T 타입 변수 또는 타입 매개 변수 (T는 타입 문자) 3. Box 원시 타입 (raw t.. 2023. 10. 11.
제네릭스 (Generics) 제네릭스 (Generics) 란 ? 1. 컴파일을 할 때, 타입을 체크해주는 기능 (compile-time type check) - JDK 1.5 예시 ) //Tv 객체만 저장할 수 있는 배열리스트 생성 ArrayList tvList = new ArrayList(); tvList.add(new Tv());//OK tvList.add(new Audio());//컴파일 에러. Tv 타입 외에 다른 타입 데이터 저장 불가 //예시 package ch12; import java.util.ArrayList; public class GenericTest { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(10); .. 2023. 10. 11.
Collections 컬렉션 클래스 Collections - 컬렉션을 위한 메서드 (static == 정적 메서드 == 클래스 메서드) 를 제공 한다. 대표적인 static 메서드를 지니고 있는 클래스는 Objects / Arrays / Collections 이다. Objects 클래스는 객체를 다룰 때 사용 하는 클래스 이다. Arrays 클래스는 배열을 다룰 때 사용 하는 클래스 이다. Collections 클래스는 컬렉션을 다룰 때 사용 하는 클래스 이다. 1. 컬렉션 채우기, 복사, 정렬, 검색 >> fill(), copy(), sort(), binarySearch(), .. 등등 2. 컬렉션의 동기화 >> synchronizedXXX() static Collections synchronizedCollection(Collection.. 2023. 10. 10.
TreeSet (2) 11 - 42 ~ 45 TreeSet (2) 11 - 42 TreeSet - 주요 생성자와 메서드 컬렉션 (Collection) 인터페이스에 존재하는 메서드인 add() 라던지 size() 라던지 remove() 라던지 isEmpty() 라던지 iterator() 라던지 이런 메서드들은 모든 컬렉션 인터페이스를 상속받은 컬렉션 프레임워크 인터페이스에 존재하는 메서드 이므로 공통의 메서드를 제외 하고 TreeSet 클래스 가 가지고 있는 메서드를 정리 해보려 한다. 1) 맨 위의 3개의 메서드는 생성자 이다. TreeSet(Comparator comp) 생성자의 인자는 비교 기준을 제공 해주는 것을 의미 한다. 만약에 비교 기준 대상이 존재 하지 않으면, 저장 하는 객체의 Comparable 을 사용 해야.. 2023. 10. 9.
TreeSet (1) 11 - 39 TreeSet >> 범위 탐색 / 정렬 - 이진 탐색 트리 (binary search tree) 로 구현. 범위 탐색 ( from ~ to ) & 정렬에 유리 하다. - 이진 트리는 모든 노드가 최대 2개의 하위 노드를 갖는다. 각 요소 (node) 가 나무 (tree) 형태로 연결 되어 있다 (LinkedList 의 변형) 최대 2개라는 의미는 0개 부터 2개 까지의 하위 노드를 가질 수 있다는 것을 의미 한다. 이진 트리에서 첫번 째 요소를 루트 == root 라고 한다. 위의 이미지를 보면, 루트의 자식으로는 2개가 있다. 또 A의 자식으로 하위 자식이 2개가 있다. B와 C의 부모는 A가 된다. 각각의 요소 하나 하나를 "노드" 라고 한다. >> 각 "노드" 가 부모와 자식 관계로 .. 2023. 10. 9.
HashSet (2) ch11-37 ~ 38 HashSet (2) 11 - 37 HashSet - 예제 - HashSet 은 객체를 저장 하기 전에 기존에 같은 객체가 있는지를 확인 한다. 같은 객체가 없으면 저장 하고, 있으면 저장 하지 않는다. - boolean add(Object o) 메서드는 저장할 객체의 equals() 메서드 와 hashCode() 메서드를 호출 한다. 즉, Set에 저장 할 때 add() 메서드를 사용 할텐데, 이때 저장하는 객체를 위의 메서드를 자동 호출 해서 중복 되는 객체가 있는지 없는지를 확인 한다. 하지만, equals() 메서드와 hashCode() 메서드가 오버라이딩 되어 있어야 정상적으로 확인 할 수 있다. 그동안, equals() 메서드만 오버라이딩 해서 사용 했었는데, 원래 정석.. 2023. 10. 9.
HashSet (1) ch11-34 ~ 36 HashSet (1) 11 - 34 HashSet - 순서 X, 중복 X Set 인터페이스를 구현한 대표 클래스는 HashSet 과 TreeSet 이다. 보통 Set을 사용 해야 한다면 HashSet 클래스를 사용 하면 된다. - Set 인터페이스를 구현한 대표적인 컬렉션 클래스 이다. - 순서를 유지하려면 LinkedHashSet 클래스를 사용 하면 된다. - TreeSet 이란 ? >> 범위 검색과 정렬에 유리한 컬렉션 클래스 이다. 범위 ? >> from ~ to 예) 10 ~ 20 하지만, TreeSet은 HashSet 보다는 데이터 추가 또는 삭제에 시간이 더 걸린다는 단점이 있다. 11 - 34 HashSet - 주요 메서드 첫번째는 기본 생성자 이다. 두번째는 지정된 .. 2023. 9. 20.
Comparator & Comparable ch11-30 ~ 33 Comparator & Comparable ch11 - 30 Comparator & Comparable - 객체 정렬에 필요한 메서드 (정렬 기준 제공이 목적) 를 정의한 인터페이스 이다. Comparable : 기본 정렬 기준을 구현 하는데 사용 한다. Comparator : 기본 정렬 기준 외에 다른 기준으로 정렬하고자 할 때 사용 한다. 아래의 이미지는 다음과 같다. 인터페이스 내부의 compare() 또는 compareTo() 메서드를 사용 하면, 반환값이 양수 또는 0 또는 음수가 나오게 된다. 왼쪽이 크면 양수 왼쪽과 오른쪽이 같으면 0 오른쪽이 크면 음수 를 반환 하게 된다. compare() 메서드는 두 객체를 비교 하는 메서드 이고, compareTo() 메서드는 .. 2023. 9. 20.
Arrays 클래스 ch11 - 25 ~ 29 Arrays 클래스 ch11 - 25 Arrays (1 / 4) - 배열을 다루기 편리한 메서드 (static) 제공 static 메서드가 제공되는 클래스의 예시는 아래와 같다. Math 클래스 Object 클래스 Collections 클래스 .. 1. 배열의 출력 - toString() 메서드의 인자로 배열을 넣으면 배열의 데이터를 문자열로 반환해준다. 만약에 배열의 데이터가 {1,2,3,4,5} 였으면, [1,2,3,4,5] 의 형태로 보여 준다. toString() 메서드는 이미지와 같이 오버로딩이 되어 있다. int[] arr = {0,1,2,3,4}; System.out.println("arr = " + Arrays.toString(arr)); 이런식으로 사용 하면 된.. 2023. 9. 20.