0308 Review

KDU·2022년 3월 8일

자바공부

목록 보기
15/17

Map interface

 키값이 중복될 수 없다. 만약 키값이 중복되어 들어온다면 이전에 존재하는 키의 밸류값이 새로 들어온 키의 밸류값으로 덮어씌워진다.

Map<K, V> var = new
1. HashMap<K, V>();
셋중에 속도가 가장 빠르나, 무작위로 저장한다.
2. TreeMap<K, V>();
키값을 사전적인 순서로 저장한다.
3. LinkedHashMap<K, V>();
키값을 들어온 순서대로 저장한다.

Generic

 강제 형변환이 불필요해지면서 코드가 덜 지저분해지고, 덕분에 강제 형변환시에 생길 수 있는 오류를 막을 수 있다.

Lambda

 함수적 인터페이스를 구현하고 호출해 익명의 함수를 만들 수 있다. 함수형 언어들의 특성을 구현하기 위해 자바 8부터 지원하기 시작했다고 한다.

package study0308;

import java.util.Arrays;

public class LambdaFunctionEx {

	public static void main(String[] args) {
		
		LambdaCal ie1 = (x,y) -> x+y;
		System.out.println(ie1.cal(13515, 236892));
		
		LambdaPrint ie2 = () -> {
			System.out.println("PRINT");
		};
		ie2.print();
		
		//람다활용
		LambdaCal2 ie3 = x -> x*2;
		int[] arr = new int[10];
		int num = 1;
		for(int i=0; i<10; i++) {
			arr[i] = num;
			arr[i] = ie3.cal(arr[i]);
			num *= 2;
		}
		System.out.println(Arrays.toString(arr));
		//결과 : 
        //250407
		//PRINT
		//[2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
	}
	
	interface LambdaCal {
		int cal(int x ,int y);
	}
	interface LambdaPrint {
		void print();
	}
	interface LambdaCal2 {
		int cal(int x);
	}
	
}

Input

 바이트 기반인 Stream과 문자 기반인 Reader가 존재하는데, 바이트 기반은 아스키코드로 입력이 이루어지기 때문에 한글이 깨지게 된다. 따라서 Reader를 애용하도록 하자.

 바이트 기반으로 된 자료에서 정보를 메모리로 입력해야 한다면 아래와 같이 하면 빠르다.

package study0308;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class BufferedReaderTest {

	public static void main(String[] args) {
		
		//byte단위로 된 구형 자료를 읽어올 때 사용할 수 있는 변환기
		FileInputStream f = null;
		try {
			f = new FileInputStream("sample.txt");
			InputStreamReader i = new InputStreamReader(f);
			BufferedReader b = new BufferedReader(i);
			
			String s = null;
			while((s = b.readLine()) != null) {
				System.out.println(s);
			}
			i.close();
			b.close();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				f.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
}

Other

ASCII (American Standard Code for Information Interchange, 미국 정보교환 표준부호)
 1byte = 8bit이다. 1byte에는 2의8승에 해당하는 256개의 값을 저장할 수 있는데, ASCII 코드에는 반절인 128개의 값이 할당되어 있다. 나머지 1bit는 Parity bit라고 하는데, 전송하고자 하는 값을 parity bit를 통해 무조건 홀수 혹은 짝수로 변환시켜 전송하여 전송중의 오류로 인해 bit가 손실되었을 때 알아차릴 수 있도록 한 것이다.

Unicode
 UTF-8(8bit로 표현), UTF-16(16bit로 표현). 일단은 모든 언어가 문제없이 나올 수 있도록 중요한 역할을 하는 문자 처리 방식으로 중요한 국제 표준으로 자리잡고 있다.
 과거 2byte = 65,536자의 유니코드가 등장해 사용되었지만 모든 언어를 담기엔 역부족이었고, 유니코드 3.0부터 상위대행(2¹⁰개)과 하위대행(2¹⁰개)을 할당하여 이 둘의 조합으로 2¹⁰ x 2¹⁰ = 1,048,576자의 글자를 담을 수 있도록 설계되었다.

profile
의문을 즐깁니다.

0개의 댓글