* Stream : 연속적으로 단방향으로 흘러가는 것
→ 데이터가 지나가는 통로
→ 단방향이기에 하나의 stream으로 입출력이 안된다.
OutputStream
: 데이터를 보낼 때InputStream
: 데이터를 수신할 때(1) BufferedReader : 텍스트를 버퍼링
→ 한번에 하나의 문자가 아니라 여러개의 문자를 한번에 읽어서 버퍼에 저장한다.
* 버퍼링 : data를 모아두었다가 한번에 전송하는 것.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] input = (br.readLine()).toCharArray();
int input = Integer.parseInt(br.readLine());
InputStreamReader
: 입력 스트림을 통해서 들어온 것을 byte를 문자열로 전환System.in
: terminal로 들어오는 사용자의 입력br.readLine()
: 입력에서 한 줄(\n)으로 끝나는 데이터를 읽는다.(2) BufferedWriter : 텍스트를 버퍼링
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(time + " ");
bw.flush();
bw.close();
bw.write()
: 값을 출력한다.bw.flush
: 버퍼에 남은 것을 모두 출력한다.bw.close
: BufferedWriter을 닫는다.(3) 다른 Writer
객체.getOutputStream()
: 객체가 가지고 있는 OutputStream을 반환한다. PrintWriter
: 텍스트 출력 기반 mapper(4) 입력의 끝 확인하기
while((input = br.readLine()) != null) {
System.out.println(input);
}
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
st.nextToken(); // 다음 token값을 반환
st.hasMoreTokens(); // 다음 token값이 있다면 true, 없다면 false를 반환
st.countTokens() // token의 개수를 반환
StringTokenizer은 한 줄을 입력받을 때마다 생성해주어야한다.
숫자 하나만 받을 경우에는 StringTokenizer을 사용하지 않는 것이 좋다.
공백 : split은 문자열의 시작에 오는 공백도 배열에 포함시키지만 StringTokenizer는 문자열의 시작에 오는 공백은 생략한다.
num.remove(1)
: 첫번째 index의 값을 제거한다.num.remove(Long.valueOf(same_num))
: Object 객체를 매개변수로 받으며 처음 나온 same_num을 제거한다.Long.valueOf()
를 통해 Long 객체로 변환해주었다.while(num.remove(Long.valueOf(same_num))) {}
를 통해 list안에 있는 모든 same_num을 제거한다.arrayList도 foreach가능함.
최대 최소
Collections.max(arrayList)
: 최댓값 반환Collections.min(arrayList)
: 최소값 반환변수 포함, 확인
arrayList.contains(변수)
: ArrayList안에 변수값을 포함하는지 true, false를 반환한다. Collections.frequency(arrayList, Integer.valueOf(in))
: ArrayList안에 이 값이 몇 개 있는지를 반환arrayList.indexOf(Integer.valueOf(max_num))
: 입력받은 값의 index를 반환정렬
Collections.sort(arrayList)
: ArrayList를 오름차순 정렬Collections.sort(arrayList, Collections.reverseOrder())
: ArrayList를 내림차순 정렬배열 변환
// array -> list
ArrayList<String> list = new ArrayList<String>(Arrays.asList(ary));
// list -> array
list.toArray();
String
- int
// String -> int
int in = Integer.parseInt(String);
// int -> String
String st = Integer.toString(int);
String
- char
// char -> String
char[] ch = string.toCharArray();
string.charAt(index); // String중에서 index의 값을 char로 반환
String.indexOf("a"); // String에서 a가 위치한 index값을 반환
// String -> char
char a = String.valueOf(char);
// String -> char[] : 다른 Wrapper Class는 배열 변환이 불가능하다.
String s = String.valueOf(charAry);
int
- double
Double.valueOf(int);
: 같은 맥락으로 list에서 remove를 사용하기 위해
while(num.remove(Long.valueOf(same_num))) {}
의 경우가 있다.
char
- int
// char -> int
int i = (int) c; (명시적 형변환?)
int i = c; (묵시적 형변환)
// int -> char
char c = (char) i;
char c = i;
코드를 작성할 때 꼭 알고리즘을 찾으려 하지말고 단순무식하게 짜도 된다.