✨ 참고 링크
https://velog.io/@hygge/Java-코딩테스트-문법-속성-정리
https://velog.io/@kjyeon1101/코테-Java-코테-벼락치기
맨 위에
import java.util.*;
꼭 붙이기
// int -> String
String.valueOf(number);
// String -> int
int number = Integer.parseInt(str);
숫자 입력받기
Scanner in = new Scanner(System.in);
// 공백으로 구분된 숫자 2개 입력 받기
int n = in.nextInt();
int x = in.nextInt();
// 공백으로 구분된 숫자 배열로 입력 받기
for (int i = 0; i < n; i++) {
int num = in.nextInt();
arr.add(num);
}
문자열 입력받기
// 공백으로 구분된 문자열 각각의 변수에 저장하기
for (int i = 0; i < t; i++) {
String a = in.next();
String b = in.next();
}
사이즈는 초기화 시 고정되며 변경이 불가능함
int[] nums = new int[5];
int[] nums = new int[] {1, 2, 3, 4, 5};
int[] temp = Arrays.copyOfRange(nums, start, end); // 배열 복사하기
// 배열의 원소 for문으로 접근하기
for (int i = 0; i < nums.length; i++)
set.add(nums[i]);
for (int num : nums)
set.add(num);
// ArrayList를 배열로 변환하기
int[] answer = nums.stream().mapToInt(i -> i).toArray();
⭐️Arrays.sort(nums); // 배열 정렬하기
Arrays.sort(nums, Collections.reverseOrder()); // 역순 정렬
// 이차원 배열의 첫 번째 원소가 같으면 두 번째 원소끼리 비교
Arrays.sort(nums, (e1, e2) -> {
if (e1[0] == e2[0])
return e1[1] - e2[1];
else
return e1[0] - e2[0];
});
사이즈가 가변적, 사이즈에 상관없이 데이터 추가/삭제 가능
List<String> list = new ArrayList<>();
list.add("서울") // list의 가장 뒤에 서울 삽입
list.addAll(list2) // list의 뒤에 list2의 모든 값 삽입
⭐️list.get(0) // 0 위치의 값 반환 (서울)
list.set(0, "대구") // 0 위치의 값을 대구로 변경
list.indexOf("대구") // 대구의 첫번째 인덱스 반환
list.lastIndexOf("대구") // 대구의 마지막 인덱스 반환
list.remove(0) // 0 위치의 값 삭제
list.remove("대구") // 첫번째 대구 삭제
list.removeAll(list2) // list에서 list2에 들어있는 모든 값을 삭제
list.retainAll(list2) // list에서 list2에 들어있는 값을 제외한 모든 값을 삭제
list.clear() // 전체 값 삭제
list.isEmpty() // 길이가 0이면 true, 아니면 false
list.size() // 길이
list.contains("서울") // 서울이 list에 있으면 true, 없으면 false
list.containsAll(list2) // list에 list2의 모든 값이 포함되어 있으면 true
list.removeIf(k -> k % 2 != 0) // 람다식으로 홀수를 list에서 모두 제거
// ArrayList 정렬하기
list.sort(Comparator.naturalOrder()); // 오름차순
list.sort(Comparator.reverseOrder()); // 내림차순
int num = (int) Math.ceil((double)(100 - progresses[i]) / speeds[i]));
한 번 만들어지면 문자를 추가하거나 삭제할 수 없는 변경 불가한 타입
String str = "abcde";
str.split(" ") // 띄어쓰기로 구분된 문자열 str을 분리해서 String[] 배열 반환
str.split("") // 띄어쓰기 없는 문자열 str을 한 문자씩 분리해서 String[] 배열 반환
Integer.toString(arr.get(i)) // int to String
str.length() // str의 길이 반환
str.isEmpty() // str의 길이가 0이면 true, 아니면 false
str.charAt(2) // 인덱스로 문자 찾기, c 반환
str.indexOf("c") // 문자로 첫번째 인덱스 찾기, 2 반환
str.lastIndexOf("c") // 문자의 마지막 인덱스 찾기, 2 반환
// String 원소 for문으로 접근하기
for (int i = 0; i < s.length(); i++) {
System.out.println(s.charAt(i));
}
str.substring(2, 4) // 2~3 위치의 문자열 "cd" 반환
str.substring(3) // 3부터 끝까지의 문자열 "de" 반환
str1.startsWith(str2) // str1의 접두어가 str2인지 확인
str.replace('b', 'k') // b를 k로 변경 (akcde)
str.equals("abcde") // str과 abcde를 비교해서 같으면 true (꼭 큰따옴표 사용하기)
str.contains("bc") // str에 bc가 포함되어 있으면 true, 아니면 false
str.trim() // str의 앞뒤 공백 제거, 문자열 사이 공백은 제거 X
str.toLowerCase() // 대문자를 모두 소문자로 변경
str.toUpperCase() // 소문자를 모두 대문자로 변경
str.compareTo("abcdd")
/*
str과 abcdd가 같으면 0
str이 abcdd보다 사전순으로 앞이면 -1
str이 abcdd보다 사전순으로 뒤면 1
str과 abcdd가 마지막 문자만 다르면 마지막 문자의 사전순 차이 반환 (여기선 1)
*/
변경 가능한 타입
StringBuilder sb = new StringBuilder();
sb.charAt(2) // 인덱스로 문자 찾기
sb.append("abc"); // 문자열 추가
sb.insert(2, "kk") // 2 위치에 kk 삽입 (→ abkkc)
sb.delete(0, 2) // 0~1 위치의 문자열 삭제 (→ c)
sb.deleteCharAt(2) // 2 위치의 문자 삭제 (→ ac)
sb.setCharAt(0, 'h') // 0 위치의 문자를 h로 변경 (→ hbc)
sb.reverse() // 문자열 거꾸로 뒤집기 (→ cba)
sb.setLength(2) // 문자열 길이를 2로 줄임 (→ ab)
sb.setLength(4) // 문자열 길이를 4로 늘림 (→ 뒤가 공백으로 채워짐)
sb.toString(); // String으로 변환
HashMap<Integer, String> map = new HashMap<>();
HashMap<String, String> map = new HashMap<>();
map.put(1, "사과")
map.put(2, "바나나")
map.put(1, "포도") // key 1이 이미 존재하면 key 1의 value가 "포도"로 대체
// Map에 배열 넣기
Map<String, String[]> arrMap = new HashMap<>();
arrMap.put("key01", valueArr[0]);
arrMap.put("key02", valueArr[1]);
arrMap.put("key03", valueArr[2]);
map.remove(1) // key 값으로만 요소 삭제 가능
map.clear() // 전체 삭제
⭐️map.containsKey(1) // key 값 중 1이 있으면 true, 없으면 false
map.containsValue("사과") // value 중 "사과"가 있으면 true, 없으면 false
/* 값 출력 */
// 방법 1
for (Integer i: map.keySet())
System.out.println(i + map.get(i)); // 1 사과
// 방법 2: key와 value가 모두 필요할 때 주로 사용
for (Map.Entry<Integer, String> entry: map.entrySet())
System.out.println(entry.getKey() + entry.getValue()); // 1 사과
HashSet<Integer> set = new HashSet<>();
set.add(1) // 값 추가
set.remove(1) // 값이 1인 데이터 삭제
set.removeAll(set2) // set의 데이터 중 set2에 들어있는 데이터를 모두 삭제
set.retainAll(set2) // set의 데이터 중 set2에 들어있지 않은 데이터를 모두 삭제
set.clear() // 모든 데이터 삭제
set.size() // 크기 반환
set.contains(1) // 값 1이 있으면 true, 없으면 false
/* 값 출력 */
// 방법 1: get 메소드가 없으므로 원소에 접근하려면 이터레이터 사용
Iterator iter = set.iterator();
while (iter.hasNext())
System.out.println(iter.next());
// 방법 2: for-each문으로 원소에 접근
for (String item: set)
System.out.println(item);