본문 바로가기

BackEnd/Java

필터 스트림의 이해와 활용 1. 필터 스트림이란? 필터 스트림이란 바이트단위로 읽어들인 데이터를 다른 형으로 바꾸어주는 것을 말한다. data.bin파일에서 데이터를 읽어 들이기 위해 인풋스트림을 만들었는데, 이 인풋스트림 은 바이트단위 또는 바이트 배열단위로 데이터를 읽어들인다. 그래서 data.bin안에 있는 4바이 트 int형 데이터를 읽어 들이면 int형으로 읽어들이는게 아니라 바이트로 쪼개서 읽어 들인다. 그렇기 때문에 이 바이트단위의 데이터를 다시 int형으로 조합을 해줘야 하는것이다. 이 역할을 하는것이 바로 필터 스트림이다. 그리고 이 필터 스트림 또한 입력스트림과 출력스트림 2가지가 있다. 읽어 들일때 변환해서 읽는것과 , 출력할때도 변환해서 출력을 하는것이다. 2. 기본 자료형 변환 데이터 입출력 필터 스트림 1..
I/O 인풋, 아웃풋에 대한 이해 1. I/O 모델과 스트림(Stream) 1) 스트림에 대한 이해 I/O 모델의 핵심은 스트림을 이해하는데 있다. 스트림이란 ‘데이터의 흐름’,또는 ‘데이 터의 흐름을 형성해 주는 통로’를 의미한다. 자바에서도 이러한 의미로 스트림이 인식되지 만,파일 또는 각종 I/O 장치와의 데이터 이동에 사용되는 인스턴스를 의미하는 용도로도 사용이 된다. 즉 어떤 I/O관련 클래스의 인스터스가 스트림인것이다. 이 스트림이라는것은 byte의 나열을 의미한다. 데이터의 흐름이 단방향이다. 그래서 입력과 출력을 동시에 진행할려면 입력용, 출력용 스트림을 둘다 생성해야한다. 2) 스트림의 종류 - Input Stream(인풋 스트림이라는 클래스) 프로그램으로 데이터를 읽어 들이는 스트림 프로그램으로 데이터를 읽어 들여야 하..
Map<K,V> 인터페이스를 구현하는 컬렉션 클래스들 1. Map 인터페이스를 구현하는 컬렉션 클래스들 - 이 클래스들은 key와 value 방식의 데이터 저장을 한다. - key 는 value를 찾는 열쇠를 의미하며 중복이 불가능하다 - value 는 저장할 데이터를 의미하고 중복이 가능하다 - value 요소의 저장 순서를 유지하지 않는다.2. Map를 구현하는 대표적인 클래스 2가지 1) HashMapHashMap 또한 해시 알고리즘을 기반으로 구현되어 있다.따라서 매우 빠른 검색속도를 보인다.1234567891011121314151617181920212223242526272829303132333435363738import java.util.HashMap;import java.util.Iterator; class a15_IntroHashMap{ pub..
Set<E> 인터페이스를 구현하는 컬렉션 클래스들 1. Set 인터페이스를 구현하는 제네릭 클래스들의 공통점1) 동일한 인스턴스의 중복 저장을 허용하지 않는다.2) 인스턴스의 저장 순서를 유지하지 않는다.3) 즉, 집합의 성격을 지닌다. 2. Set 인터페이스를 구현하는 제네릭 클래스들1) HashSet- HashSet은 중복저장을 판담함에 있어서 기본적으로 인스턴스의 참조값을 기준으로 중복을 판단한다. 그러므로 프로그래머가 equals메소드를 오버라이딩 함으로써 중복저장에 대한 기준을 세워줘야 한다.- HashSet은 해시 알고리즘을 적용하여 hashCode 메소드를 오버라이딩 함으로써 성능을 개선 할 수 있다. 아래는 HashSet이 중복을 허용하지 않고 순서를 유지하지 않음을 보여준다.123456789101112131415161718192021im..
Iterator 를 이용한 인스턴스의 순차적 접근 1. 컬렉션 프레임워크와 Iterator 의 관계자바의 컬렉션 프레임워크는 컬렉션에 저장된 요소를 읽어오는 방법을 Iterator 인터페이스로 표준화하고 있습니다.Collection 인터페이스에는 iterator 라는 이름의 메소드가 정의되어있다.Iterator iterator() { .... }iterator 메소드가 반환하는 참조 값의 인스턴스는 Iterator인터페이스를 구현하고 있다.iterator 메소드의 반환형이 Iterator이니, 반환된 참조값을 이용해서 Iterator에 선언된 함수들을 호출할수있다그러면 컬렉션 인스턴스에 저장된 인스턴스의 순차적 접근이 가능하다.따라서 Collection 인터페이스를 상속받는 List와 Set 인터페이스에서도 iterator() 메소드를 사용할 수 있다...
List<E> 인터페이스를 구현하는 컬렉션 클래스들 1. List 인터페이스를 구현하는 제네릭 클래스들의 공통점1) 동일한 인스턴스의 중복 저장을 허용한다2) 인스턴스의 저장 순서가 유지된다. 2. List 인터페이스를 구현하는 제네릭 클래스들1) ArrayList- ArrayList는 이름이 의미하듯이 배열 기반으로 데이터를 저장한다.- 데이터의 저장을 위해서 인덱스 정보를 별도로 관리할 필요가 없다.- 인데스를 통해 데이터의 참조가 용이해서 빠른 참조가 가능하다.- 데이터의 삭제를 위한 추가적인 코드의 작성이 필요 없다.- 데이터의 삭제에 필요한 연산과정이 매우 길다.- 저장되는 인스턴스의 수에 따라서 크기가 자동으로 늘어나 배열과 달리 길이를 고민하지 않아도 된다.- 저장소의 용량을 늘리는 과정에서 많은 시간이 소요된다. 123456789101112..
컬렉션 프레임워크 1. 컬렉션 프레임워크의 기본적 이해1) 프레임 워크(Framework)란? 생산성을 향상시키기 위한것소프트웨어간의 호환성, 통신성, 유지보수성을 좋게하는 도구소프트웨어를 만들기에 앞서서 큰 골격을 만들고 , 이 골격을 기준으로 삼고 구현하는것.완성품을 만드는데 있어서 하나의 골격잘 정의된, 약속된 구조나 골격잘 정의된, 약속된 구조의 클래스들여러 프로그래머들에 의해 사용되도록, 잘 정의된 클래스들의 모임컬렉션 라이브러리라 하지 않고 컬렉션 프레임워크라 하는것은컬렉션과 관련된 클래스들의 정의에 적용되는 설계의 원칙, 또는 구조가 존재하기 때문이다. 2) 컬렉션 프레임워크란?데이터의 저장, 그리고 이와 관련 있는 알고리즘을 구조화 해놓은 프레임워크다데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을..
클래스의 정의와 객체(인스턴스)의 생성 1. 객체의 사전적 의미는 물건 또는 대상이다. 2. 객체는 변수,데이터,상태(데이터는 계속 변함, 사과의 상태 갯수는 계속 변함)와 메소드,기능,행위로 이루어져 있다. 펜으로 치면 샤프심이 변수인데 write가 메소드라면 메소드를 계속쓰면 샤프심 용량 줄어듬. 행위로 인해 상태가 변함. 기능은 데이터를 변화시킴. 객체안의 변수와 메소드는 긴밀한 유대관계가있음. 3. 객체(인스턴스)를 만드는 순서 1) 클래스를 정의한다. 틀을 정의한다. 이거는 붕어빵의 철판틀을 만들어내는것, 변수와 메소드를 묶어놓은것클래스는 메모리 공간에 아직 할당 안된 상태 2) 객체를 만든다. 붕어빵을 계속 찍어내는것객체를 만들면 그때 메모리 공간 할당됨! Fruitseller seller=new FruitSeller(); //객체..