목록자바 복습 (26)
판봉 개발 일기
모든 문자 기반의 출력 스트림 또한 바이트 기반의 출력 스트림과 비슷하게 Writer 클래스를 상속받아서 만들어집니다. 다음 표는 Writer 클래스의 주요 메소드가 서술되어 있습니다. 리턴 타입 메소드 설명 void write(int c) 매개값으로 주어진 한 문자를 보냄 void write(char[] cbuf) 매개값으로 주어진 배열의 모든 문자를 보냅니다. void write(char[] cbuf, int off, int len) 매개값으로 주어진 배열에서 cbuf[off]부터 len개까지의 문자를 보냅니다. void write(String str) 매개값으로 주어진 문자열을 보냅니다 void write(String str, int off, int len) 매개값으로 주어진 문자열에서 off순번부..
모든 바이트 기반 입력 스트림은 "InputStream"을 상속받아서 만들어 집니다. 다음은 InputStream 클래스의 주요 메소드를 표로 나타낸 것입니다. 리턴 타입 메소드 설명 int read() 1byte를 읽고 읽은 바이트를 리턴 int read(byte[] b) 읽은 바이트를 매개값으로 주어진 배열에 저장하고 읽은 바이트 수를 리턴 int read(byte[] b, int off, int len) len개의 바이트를 읽고 매개값으로 주어진 배열에서 b[off]부터 len개 까지 저장 그리고 읽은 바이트 수를 리턴 void close() 입력 스트림을 닫습니다. read() 메소드는 입력 스트림으로부터 1byte를 읽고 int(4byte) 타입으로 리턴합니다. 따라서 리턴된 4byte중 끝 1..
모든 바이트 기반 출력 스트림 클래스는 OutputStream 클래스를 상속받아서 만들어진다고 합니다. 다음 표는 OutputStream 클래스에서 주로 사용하는 메소드를 나타낸 것입니다. 리턴 타입 메소드 설명 void write(int b) 1byte를 출력 void write(byte[] b) 매개값으로 주어진 배열 b의 모든 바이트를 출력 void write(byte[] b, int off, int len) 매개값으로 주어진 배열 b[off]부터 len개까지의 바이트를 출력 void flush() 출력 버퍼에 잔류하는 모든 바이트를 출력 void close() 출력 스트림을 닫음 write(int b) 메소드는 매개 변수로 주어지는 int(4byte)에서 끝 1byte만 출력 스트림으로 보냅니다...

자바에서 데이터는 스트림(Stream)을 통해 입출력이 됩니다. 스트림은 단일 방향으로 연속적으로 흘러가는 것을 말하는데 밑의 사진처럼 물이 높은 곳에서 낮은 곳으로 흐르듯이 데이터는 출발지에서 도착지로 흘러갑니다. 그리고 프로그램이 출발지 or 도착지 에 따라 사용하는 스트림의 종류가 결정됩니다. 프로그램이 도착지이면 데이터를 받아야 하므로 입력 스트림을 사용하고, 프로그램이 출발지 이면 데이터를 출력해야 하므로 출력 스트림을 사용합니다. java.io 패키지엔 여러종류의 스트림 클래스를 제공하고 있는데 크게 두 종류로 구분이 됩니다. 바이트(byte) 기반 스트림 : 그림, 멀티미디어 등의 바이너리 데이터를 읽고 출력할때 사용합니다. 문자(character) 기반 스트림 : 문자 데이터를 읽은 뒤 출..

FIFO 컬렉션은 다른 말로 "선입선출"이라고한다. "선입선출"이라 함은 먼저 넣은 객체가 먼저 빠져나가는 자료구조를 말한다. 또한 FIFO 자료구조를 제공하는 Queue 인터페이스를 제공하고 있다. LIFO 컬렉션의 Stack은 클래스이며 FIFO 컬렉션의 Queue는 인터페이스란 점을 명확히 상기시켜야겠다. 위 사진 처럼 Queue의 구조는 먼저 기다린 사람이 먼저 가게안으로 들어가는 것처럼 연상해서 이해하면 쉬울 것 같다. 이것또한 Stack과 다르게 가로라고 이해하면 좋을것이라고 생각이 된다. 다음은 Queue 인터페이스의 메소드를 정의한 것이다. 리턴 타입 메소드 설명 boolean offer(E e) 주어진 객체를 넣음 E peek() 객체 하나를 가져옴 객체를 큐에서 제거하지 않음 (stac..

LIFO 컬렉션은 "후입선출" 이라고도 한다. "후입선출"이라 함은 나중에 넣은 객체가 먼저 빠져나가는 자료구조를 말한다. LIFO 자료구조를 제공하는 Stack 클래스가 존재한다. "Stack"은 위의 사진 처럼 세로를 연상하면 이해가 쉬울 것 같다. 다음 표는 Stack 클래스의 주요 메소드이다. 리턴 타입 메소드 설명 E push(E item) 주어진 객체를 스택에 넣음 E peek() 스택의 맨 위 객체를 가져옴 객체를 스택에서 제거하지 않음 E pop() 스택의 맨 위 객체를 가져오지만 객체를 스택에서 제거함 Stack 객체를 생성하는 방법은 아래와 같다. Stack stack = new Stack(); Stack stack = new Stack(); // 왼쪽 Stack에 지정된 타입을 자동으..
Hastable은 HashMap과 동일한 내부 구조를 가지고 있다. 그래서 키로 사용할 객체는 hashCode()와 equals() 메소드를 재정의해서 동등 객체가 될 조건을 정해야 한다. 한가지 차이점이 있다면 Hashtable은 동기화된 메소드로 구성되어 있기때문에 스레드에 안전하다. Hashtable의 생성 방법은 다음과 같다. Map map = new Hashtable(); 다음 코드는 Hashtable은 활용한 예제이다. import java.util.*; public class HashTableExample { public static void main(String[] args) { Map map = new Hashtable(); // Hashtable 생성 map.put("spring", "..
HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션이다. HashMap의 키로 사용할 객체는 hashCode()와 equals()메소드를 재정의해서 동등 객체가 될 조건을 정해야 한다. 그 이유는 객체가 달라도 동등 객체라면 같은 키로 간주하고 중복 저장되지 않도록 하기 위함이다. ※동등 객체의 조건은 hashCode()의 리턴값이 같아야 하며, equals() 메소드가 true를 리턴해야 한다. (주로 키는 String을 잘씀) HashMap을 생성하는 방법은 아래와 같다 Map map = new HashMap(); 주의 할 점으로는 키와 값의 타입은 기본타입을 사용할 수 없으며 클래스 및 인터페이스 타입만 사용이 가능하다. 밑은 키를 String타입, 값으로 Integer 타입을 사용하..
Map 컬렉션은 키(key)와 값(value)으로 구성된 Map.Entry 객체를 구성하는 구조를 가지고 있다. 여기서 말하는 Entry란 Map 인터페이스 내부에 선언된 중첩 인터페이스이다. ※여기서 키와 값은 모두 객체이다. Map 컬렉션에서 키는 중복저장이 불가능 하지만 값은 중복 저장이 가능하다. 따라서, 동일한 키로 값을 저장하면 새로운 값으로 저장이된다. Map 컬렉션에는 HashMap, Hashtable, LinkedHashMap, Properties, TreeMap 등이 있다. HashMap Hashtable LinkedHashMap Properties TreeMap 다음은 Map 컬렉션에서 공통적으로 사용이 가능한 Map 인터페이스의 메소드들을 나타낸 것이다. ※ 키로 객체들을 관리하기 ..
HashSet은 Set 인터페이스의 구현 클래스이다. HashSet을 생성하는 방법은 다음과 같이 기본 생성자를 호출하면 된다. Set set = new HashSet(); String 객체를 저장하는 HashSet은 다음과 같이 생성할 수 있다. Set set = new HashSet(); Set set = new HashSet(); 무언가 어디서 많이 본것 같은건 비밀.. HashSet은 객체들을 순서 없이 저장하고 동일한 객체는 중복 저장하지 않는다는게 포인트이다. HashSet이 판단하는 동일한 객체란 꼭 같은 인스턴스만을 의미하지 않는다. HashSet은 객체를 저장하기 전에 먼저 hashCode()메소드를 호출하여 해시코드를 얻고, 객체들의 해시코드를 비교한다. 만약 동일한 해시코드가 있다면 ..