Java (13) 썸네일형 리스트형 IO IO(Input Output) 크게 Byte 단위 클래스와 문자 단위 클래스로 나뉘어진다. Byte 단위 입출력 클래스는 InputStream 클래스와 Output 클래스라는 추상 클래스를 상속 받아서 만들어졌다. 문자 단위 입출력 클래스는 Reader클래스와 Writer 클래스라는 추상 클래스를 상속 받아서 만들어졌다. 파일로 부터 입력받고 쓰기 위한 클래스 : FileInputStream, FileOutputStream, FileReader, FileWriter 배열로 부터 입력받고 쓰기 위한 클래스 : ByteArrayInputStream, ByteArrayOutputStream, CharReader, CharWriter 다양한 데이터 입력받고 쓰기 위한 클래스 : DataInputSteram, D.. Map 인터페이스 데이터는 key와 value로 구성된다. Map 인터페이스를 구현한 클래스 HashMap 클래스 해시 테이블 알고리즘으로 구현된 클래스 해시 테이블 알고리즘에서 저장할 데이터의 해시(hash) 값을 계산할 때, hashCode 메소드를 사용한다 성능 : 평균 O(1), 최악 O(n) TreeMap 클래스 Red Black Tree 알고리즘으로 구현된 클래스 SortMap 인터페이스를 구현되었다. 등록된 데이터 항목들이 key 순서대로 정렬된다. 성능: 평균 O(logn), 최악 O(logn) HashMap vs HashSet HashSet은 Set 인터페이스를 구현한 클래스. 중복허용안함 HashMap은 Map 인터페이스를 구현한 클래스. Key값은 중복허용안함 Value는 중복허용함. HashMap은 .. Array vs List Array 같은 자료형을 가진 변수를 하나로 표현한 것. 원시타입과 객체 모두 가질 수 있다. 연속된 메모리 공간이다. 그래서 각 데이터가 줄줄이 저장될 것이기 때문에 자료형을 미리 적어주어야 한다. 인덱스는 값에 대한 유일무이한 식별자 크기가 불변적 장점: 인덱스를 활용하여 빠르게 조회 가능 단점: 엘리먼트가 삭제되어도 빈 자리가 남는다. => 불필요한 메모리 차지 List 순서가 있는 데이터들의 모임 크기가 가변적 Array의 단점을 보완한다. 불연속적인 메모리 공간 차지 리스트에서 인덱스는 몇 번째 데이터인가 정도의 의미 ArrayList와 LinkedList가 있다. ArrayList Array List는 배열을 이용해서 리스트를 구현한 것 데이터의 추가 => Array List는 내부적으로 데이.. Collection Framework class library 자주 사용하는 클래스들을 컴파일하여 jar 파일로 묶어놓은 것. JDK에 포함된 클래스 라이브러리를 Java 표준 클래스 라이브러리라고 한다. Framework 규모가 크고, 객체지향적으로 클래스들이 서로 연결되고 실행되는 구조를 갖는 클래스 라이브러리 Collection Framework의 Interface들 Collection interface : 자바 컬랙션 클래스를 대표하는 인터페이스 Set interface : 집합 개념으로 주로 중복체크 List interface : 배열과 비슷한 방법으로 사용할 수 있는 컬렉션 클래스들을 대표 Queue interface : FIFO(first-in, first-out) Deque interface : 양방향 큐. 큐(queue)처럼.. 다형성 목적 사용 목적이 유사한 클래스들의 사용 방법을 통일하여 서로 호환되도록 만드는 것 구현 공통 부모 클래스를 상속(extends) 받거나, 아니면 공통 interface를 구현(implements) 해야 한다. 공통 부모 클래스를 상속(extends) 받은 자식 클래스들은 다형성을 구현하려는 부모 클래스의 메소드들 재정의 해야한다. 공통 interface를 구현(implements) 자식 클래스들은 interface의 모든 메소드를 구현해야 한다. 인터페이스 상속가능하다. 예를 들어 ArrayList 클래스는 List interface에 정의된 메소드들 뿐만 아니라, Collection interface에 정의된 메소드들도 전부 구현했다. ArrayList 클래스와 LinkedList 클래스는 둘 다 L.. 배열 정렬 Arrays 클래스의 sort 메소드 Comparable 인터페이스 interface Comparable { int compareTo(T obj) } 주로 순서 기준이 한개인 경우 Comparator 인터페이스 interface Comparator { int compare(T obj1, T obj2); } 주로 순서 기준에 여러개인 경우 Java에 기본 자료형 int가 이미 있는데, Integer 클래스가 필요한 이유는 무엇일까? 기본자료형은 Arrays.sort()를 사용할 수 있다. Comparable 인터페이스를 구현한 클래스 객체의 배열은 Arrays 클래스의 sort 메소드 사용하여 정렬할 수 있다. 이렇게 객체 또는 클래스가 제공하는 메소드를 사용하기 위해서 래퍼 클래스가 필요하다. 문자열 클래스 String this 문자열을 수정하는 것이 아니고, 수정된 새 문자열 객체를 리턴한다. this 문자열은 수정되지 않는다(immutable). 연산시 새로운 메모리에 할당됨. equals 메소드가 재정의가 되어있다. StringBuilder 내부 문자열을 직접 수정한다(mutable). Thread Safe하지 않다. StringBuilder append()에서 리턴타입이 StringBuilder인 이유는 메소드 체이닝 기법을 사용하기 위해서다. 또한 equals 메소드가 재정의가 안됐다. 이유는 문자열을 조립해서 생성할 때만 잠깐 StringBuilder 객체를 사용하라는 의미에서 equals 메소드가 재정의 되지 않았다. 따라서 문자열을 조립해서 생성할 때만 잠깐 StringBuilder 객체를 사.. Object 클래스 모든 클래스의 부모 클래스는 Object 클래스다. 메소드 protected Object clone(): 자기 자신을 복제해서 새 객체를 만들어 리턴한다. boolean equals(Object obj): equals 메소드를 제대로 구현했다면, equals 메소드는 this 객체와 파라미터 obj 객체의 내용이 동일한지 비교해야 한다. (equality 비교) 그런데 Object 클래스에 구현된 equals 메소드는 객체의 내용을 비교하지 않고 두 객체가 동일한 객체인지 비교한다. (identity 비교) 그래서 equality를 제대로 비교하려면 자식 클래스에서 이 메소드를 재정의 해야 한다. protected void finalize(): 객체가 더 이상 사용되지 않을 때, 자동으로 객체가 파괴되고.. 이전 1 2 다음