2024.05.24
#컬렉션 프레임 워크
배열은 자료형이 같아야하고, 크기가 고정되어있어 데이터를 추가하거나 삭제할때 코드가 번거로워 짐
이때 동적인 배열 컬렉션 프레임 워크를 사용하면 다양한 자료형을 담을 수 있고
데이터를 담고 삭제하는 만큼 배열의 크기가 자동으로 늘고, 줄어듬
Set : 중복 허용 X
HashSet : 데이터 순서 유지 X
LinkedHashSet : 데이터 순서 유지 O
TreeSet : 데이터 정렬 (단, 자료형 같아야함)
List : 중복 허용 / 순서 유지 O
ArrayList, LinkedList 둘 다 사용법은 동일
ArrayList는 배열처럼 연속된 메모리 확보이기 때문에
배열의 중간에 데이터를 추가, 삭제하면 가비지가 만들어지고 데이터수만큼 이동해야하기 때문에 성능이 떨어질 수 있음
이런 경우 LinkedList를 사용하는게 효율적
Map : 인덱스 대신 key에 의해 데이터에 접근하는 방식
HashMap : 순서 유지 X
LinkedHashMap : 순서유지 O
TreeMap : key값으로 정렬
#파일 입출력
프로그램 실행한 결과 --> 화면에 출력 --> 컴퓨터 종료 시 결과 사라짐
결과를 영구적으로 보관하려면 파일 이용
프로그램 실행에 필요한 데이터를 키보드로부터 입력받지않고 파일로부터 입력받을 수 있음
"입출력"은 컴퓨터 메모리 입장에서 "입력"이고 "출력"
프로그램 실행한 결과 즉 메모리의 내용을 파일로 "출력"
파일로부터 컴퓨터 메모리로 읽어들이기 "입력"
자바는 이러한 "입출력"을 위해 java.io 패키지에 관련 클래스들을 만들어 둠 (io -> input/output)
입출력(스트림) : 순서가 있는 자료의 흐름 / 보통 다른 프로그래밍에서는 출력하려는 대상에 따라
그것이 파일인지 프린터인지 네트워크인지 따라 출력 방법이 달라지고 프로그램이 복잡해짐
자바에서는 출력대상이 무엇이라도 동일한 방식으로 사용할 수 있도록 만들어 둠
==> 그걸 "스트림" 이라고 함
입출력(Stream) 형태
- 문자단위의 입출력
Reader : 문자단위의 입력을 위한 제일 조상 / Writer : 문자단위의 출력을 위한 제일 조상
- 바이트단위의 입출력
InputStream : 바이트 단위의 입력을 위한 제일 조상 / OutputStream : 바이트 단위의 출력을 위한 제일 조상
Class FileWriter
- java.lang.Object
-
- java.io.Writer
-
- java.io.OutputStreamWriter
-
- java.io.FileWriter
프로그램 실행한 결과를 문자 단위로 파일 출력하려면 Writer의 후손클래스인 FileWriter를 이용할 수 있음