키값이 중복될 수 없다. 만약 키값이 중복되어 들어온다면 이전에 존재하는 키의 밸류값이 새로 들어온 키의 밸류값으로 덮어씌워진다.
Map<K, V> var = new
1. HashMap<K, V>();
셋중에 속도가 가장 빠르나, 무작위로 저장한다.
2. TreeMap<K, V>();
키값을 사전적인 순서로 저장한다.
3. LinkedHashMap<K, V>();
키값을 들어온 순서대로 저장한다.
강제 형변환이 불필요해지면서 코드가 덜 지저분해지고, 덕분에 강제 형변환시에 생길 수 있는 오류를 막을 수 있다.
함수적 인터페이스를 구현하고 호출해 익명의 함수를 만들 수 있다. 함수형 언어들의 특성을 구현하기 위해 자바 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);
}
}
바이트 기반인 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();
}
}
}
}
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자의 글자를 담을 수 있도록 설계되었다.