qordpsem 2024. 5. 24. 17:27

#컬렉션 프레임 워크

배열은 자료형이 같아야하고, 크기가 고정되어있어 데이터를 추가하거나 삭제할때 코드가 번거로워 짐

이때 동적인 배열 컬렉션 프레임 워크를 사용하면 다양한 자료형을 담을 수 있고

데이터를 담고 삭제하는 만큼 배열의 크기가 자동으로 늘고, 줄어듬

 

 

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

 

프로그램 실행한 결과를 문자 단위로 파일 출력하려면 Writer의 후손클래스인 FileWriter를 이용할 수 있음