Scanner
Scanner sc = new Scanner();
int a = sc.nextInt();
flaot b = sc.nextFloat();
String c = sc.nextLine();
BufferedReader
Scanner보다 속도가 빠르다. 필자는 백준 풀 때 무조건 이걸 사용하는 편.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOExcepion; //예외 처리 필수
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
System.out.print 사용
System.out.println() ; //출력 후 한 줄 띄기
System.out.print(); //한 줄 띄기 없음
System.out.printf(); //형식 지정해서 출력하기
BufferedWriter 사용
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("anogowop"); //buffer에 출력할 내용을 저장함.
bw.flush(); //남아 있는 데이터를 모두 출력시킴
bw.close(); //스트림을 닫음
같은 타입의 데이터들을 연속된 공간에, 인덱스를 부여하여 저장하는 자료구조임. 크기가 한 번 정해지면 크기를 바꿀 수 없음.
int[] arr1 = new int[5];
int[] arr2 = {1, 2, 3, 4, 5};
int[] arr3 = new int[] {1, 2, 3, 4, 5};
String[] str = {"안녕", "잘 지내니?"};
int[][] twoDimArray = new int[3][4];
//1차원 배열 값을 출력할 때
System.out.println(Arrays.toString(arr1));
//2차원 배열 값을 출력할 때
System.out.println(Arrays.deepToString(twoDimArray));
//배열 정렬
Arrays.sort(arr1);
//역정렬
Arrays.sort(arr2, Collections.reverseOrder());
//배열 복사
int[] copy = Array.copyOf(arr1, 길이);
ArrayList, Vector, LinkedList, Stack 등이 있다.List<Integer> ls = new ArrayList<>();
List<Integer> ls1 = new ArrayList<>(List.of(1, 2, 3, 4, 5));
ls.get(i) // i번째 값 확인
ls.set(i, 3) // i번째 값을 3으로 변경함
ls1.add(1); // 맨 뒤에 1을 추가함
ls1.add(i ,4); // i번째 위치에 4를 추가
ls1.remove(4); // 4번쨰 위치의 원소를 삭제
ls1.sort(Integer::compareTo); //오름차순으로 정렬
ls1.sort(Comparator.reverseOrder());
import java.util.Array;
import java.util.HashSet;
HashSet<Integer> set1 = new HashSet<>();
HashSet<Integer> set2 = new HashSet<>();
set1.add(1);
set2.add(2);
set1.remove(1);
//교집합
set1.retainAll(set2);
//차집합
set1.removeAll(set2);
//합집합
set1.addAll(set2);
//배열 -> Set으로
int[] arr = {1, 2, 3, 4, 5};
HashSet<Integer> newSet = new HashSet<Integer>(Arrays.asList(arr));
//set -> 배열로
int[] newArr = newSet.toArray(new int[newSet.size()]);
TreeSet & LinkedHashSet
TreeSet : 값을 오름차순으로 정렬해 저장함
LinkedHashSet : 값을 입력한 순서대로 정렬함
- TreeSet 은 HashSet보다 시간이 오래 걸리고, LinkedHashSet은 추가적인 오버헤드가 존재할 수 있음
- HashSet > LinkedHashSet > TreeSet 순으로 효율이 좋음
import java.util.HashMap;
HashMap<String, Integer> map = new HashMap<>();
map.put("이승용", 28);
map.get("이승용"); // 28
map.containKeys("이승용"); // true, false
map.remove("이승용");
map.size();
// 맵의 모든 key를 모아서 집합으로 반환
map.keySet();
HashSet<Integer> tmp = new HashMap<>(map.keySet());
// 맵의 모든 Key-value 쌍을 가져와 Set 객체로 반환
for(Map.Entry<String, Integer> entry : map.entrySet()){
...
}
TreeMap & LinkedHashMap
TreeMap : 입력된 Key를 오름차순으로 데이터 정렬
LinkedHashMap : 입력된 순서대로 데이터를 저장
- HashMap > LinkedHashMap > TreeMap 순으로 효율이 좋음