BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(br.readLine());
int b = Integer.parseInt(br.readLine());
Math.pow(a, b); // a의 b제곱
Math.sqrt(a); // a의 제곱근
int[] arr = {1, 2, 3, 4, 5};
Arrays.stream(arr).sum(); // 배열 arr의 합
// 배열의 평균, average()가 리턴한 값이 없을 경우, null 대신 0 반환
double avg = Arrays.stream(arr).average().orElse(0); // 배열의 평균
Math.min(a,b);
Math.min(a,b);
char c = 'A';
char k = 'B';
Character.toString(c); // char형 변수 c를 String으로 변환
Character.compare(c, k); // 비교 같으면 0 출력, 다르면 -1 반환
Character.isUpperCase(c); // c가 대문자이면 true
Character.isLowerCase(c); // c가 소문자이면 true
Character.isDigit(c); // c가 숫자이면 true
Character.isAlphabetic(k); // k가 알파벳이면 true
// String 배열 -> String 리스트
String[] arr = {"A", "B", "C"};
List<String> arrList = new ArrayList<>(Arrays.asList(arr));
// String 리스트 -> String 배열
String[] arr2 = arrList.stream().toArray(String[]::new);
// int 배열 -> int 리스트
int[] intArr = new int[]{1, 4, 3, 5, 2};
List<Integer> intList = Arrays.stream(intArr).boxed().collect(Collectors.toList());
Collections.reverse(intList); // 뒤집기
// int 리스트 -> int 배열
int[] intArr2 = intList.stream().mapToInt(i->i).toArray();
int[] intArr = new int[]{1, 4, 3, 5, 2};
List<Integer> intList = Arrays.stream(intArr).boxed().collect(Collectors.toList());
Collections.sort(intList); // 오름차순 정렬
Collections.sort(intList, Collections.reverseOrder()); // 내림차순 정렬
Collections.reverse(intList); // 뒤집기
Collections.frequency(intList, 2);
// 이분 탐색: 해당 값 있으면 해당 인덱스 반환, 없으면 해당 값보다 큰 첫번째 위치 반환
Collections.binarySearch(intList, -1); // -1
Stack<Integer> stack = new Stack<>();
stack.push(1); // 값 넣기
stack.contains(1); // 스택에 해당 값이 포함되어있으면 true
stack.peek(); // stack의 top 반환(제거X), 비어있으면 null 반환
stack.pop(); // 값 빼고 반환
stack.clear(); // 값 모두 삭제
stack.size();
stack.empty(); // 스택이 비어있으면 true
// 일반 큐
Queue<Integer> queue = new LinkedList<>();
// 우선순위 큐: 기본으로 낮은 숫자가 우선 순위를 가짐
PriorityQueue<Integer> pq = new PriorityQueue<>();
// 높은 숫자가 우선순위를 가지도록 선언
PriorityQueue<Integer> pq2 = new PriorityQueue<>(Collections.reverseOrder());
queue.add(1); // 값 추가, 큐가 꽉 찬 경우 에러 발생
queue.offer(2); // 값 추가, 큐가 꽉 찬 경우 false 반환
queue.poll(); // 첫번째 값 반환, 비어있으면 null 반환
queue.peek(); // 첫번째 값 출력(제거X)
queue.remove(); // 첫번째 값 제거
queue.clear(); // 값 모두 삭제
HashMap<Integer, String> map = new HashMap<>();
LinkedHashMap<Integer, String> map2 = new LinkedHashMap<>();
TreeMap<Integer, String> map3 = new TreeMap<>();
map.put(1, "사과");
map.remove(1); // key값으로 요소 삭제
map.clear(); // 전체 삭제
map.containsKey(1); // key 값 중 해당 값이 있으면 true
map.containsValue("사과"); // value 값 중 해당 값이 있으면 true
map2.put(2, "바나나");
map2.put(1, "사과");
map3.put(3, "파인애플");
map3.put(1, "포도");
map3.put(2, "사과");
// 출력 방법1
for(Integer i : map2.keySet()){
System.out.println(i + map2.get(i));
// 2바나나
// 1사과
}
for(Integer i : map3.keySet()){
System.out.println(i + map3.get(i));
// 1포도
// 2사과
// 3파인애플
}
// 출력 방법2
for(Map.Entry<Integer, String> entry : map2.entrySet()){
System.out.println(entry.getKey() + entry.getValue());
// 2바나나
// 1사과
}
우선 Collections.sort()
사용하기 위해 List 형태로 Map을 가져와야함
Map<String, Integer> map = new HashMap<>();
map.put("a", 3);
map.put("b", 2);
map.put("c", 1);
List<Map.Entry<String, Integer>> entryList = new LinkedList<>(map.entrySet());
1. Entry 내장 함수 사용
entryList.sort(Map.Entry.comparingByValue());
for(Map.Entry<String, Integer> entry : entryList) {
System.out.println("key: "+ entry.getKey()+", value: "+entry.getValue());
/**
* key: c, value: 1
* key: b, value: 2
* key: a, value: 3
*/
}
2. comparator 사용
entryList.sort(new Comparator<Map.Entry<String, Integer>> () {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o1.getValue() - o2.getValue();
}
});
for(Map.Entry<String,Integer> entry : entryList){
System.out.println("key: "+entry.getKey()+", value: "+entry.getValue());
}
3. 람다 함수 사용
entryList.sort(((o1, o2) -> map.get(o1.getKey()) - map.get(o2.getKey())));
for(Map.Entry<String,Integer> entry : entryList){
System.out.println("key: "+entry.getKey()+", value: "+entry.getValue());
}
HashSet<Integer> set = new HashSet<>();
LinkedHashSet<Integer> set1 = new LinkedHashSet<>();
TreeSet<Integer> set2 = new TreeSet<>();
set.add(1);
set.add(2);
set.contains(1);
set2.add(1);
set2.add(4);
set.remove(1); // 값 삭제
set.removeAll(set2); // set 데이터 중 set2에 들어있는 데이터 삭제
set.retainAll(set2); // set 데이터 중 set2에 들어있찌 않은 데이터 삭제
set.clear();
// 출력방법1
for(Integer item : set2){
System.out.println(item);
}
// 출력방법2
Iterator<Integer> iter = set2.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
String을 좀 더 효율적으로 사용할 수 있도록 하는 클래스
StringBuilder sb = new StringBuilder();
sb.append("문자열1>>").append("문자열2");
String str = sb.toString();
System.out.println(sb); // 문자열1>>문자열2
System.out.println(str); // 문자열1>>문자열2
indexOf
: 특정 value가 없으면 -1 반환arr[i] = list.get(i).intValue();
[Java]코딩테스트 벼락치기 정리 2편
[Java] 코딩테스트 문법 속성 정리 (2)
[Java] HashMap Value 기준으로 정렬하기
Java 코딩테스트 관련 팁