번호 | 문제 | 코드 |
---|---|---|
1 | Two Sum | Java |
20 | Valid Parentheses | Java |
125 | Valid Palindrome | Java |
5 | Longest Palindromic Substring | Java |
217 | Contains Duplicate | Java |
387 | First Unique Character in a String | Java |
53 | Maximum Subarray | Java |
344 | Reverse String | Java |
242 | Valid Anagram | Java |
-
getOrDefault(Key, DefaultValue)
:Key
가 존재하면, 해당Key
의Value
를 반환하고, 없으면Default Value
로 설정한 값을 반환하는 메서드 -
computeIfAbsent(key, mappintFunction)
:-
null
이 아닌 값과 관련된 Key
먼저 키가 맵에 있는지 확인한다. Key가 있고null
이 아닌 값이 Key와 관련된 경우 해당 값을 반환. -
매핑 함수를 사용하여 Value 계산
또한 Key가 맵에 없거나null
값이 Key와 관련된 경우 지정된mappingFunction
을 사용하여 값을 계산하려고 시도한다. 또한 계산된 값이null
이 아니면 계산된 값을 맵에 입력한다. -
매핑 함수가
null
을 반환하는 경우
또한mappingFunction
이null
을 반환하는 경우 맵은 매핑을 기록하지 않는다. -
매핑 함수에서 예외 발생 마지막으로
mappingFunction
이 확인되지 않은 예외를 발생시키면 예외가 다시 발생하고 맵은 매핑을 기록하지 않는다.
-
-
Value
를 기준으로 정렬하기-
List
에entrySet()
을 넣어서 정렬하는 방법Map<Integer, Integer> map = new HashMap<>(); map.put(1, 2); map.put(2, 1); map.put(3, 8); List<Map.Entry<Integer, Integer>> entryList = new ArrayList<>(map.entrySet()); // 오름차순 정렬 // 1. 람다를 이용하는 방법 entryList.sort((a, b) -> a.getValue() - b.getValue()); // {2=1, 1=2, 3=8} // 2. Map.Entry에 내장 함수를 사용하는 방법 entryList.sort(Map.Entry.comparingByValue()); // {2=1, 1=2, 3=8} // 내림차순 정렬 // 1. 람다를 이용하는 방법 entryList.sort((a, b) -> b.getValue() - a.getValue()); // {3=8, 1=2, 2=1} // 2. Map.Entry에 내장 함수를 사용하는 방법 entryList.sort(Map.Entry.comparingByValue().reversed()); // {3=8, 1=2, 2=1}
-
-
Map
의 value 중 최대, 최소값 뽑기Collections
를 이용한다.
Map<Character, Integer> count = new HashMap<>(); String str1 = "apple"; for (char c: str1.toCharArray()) { count.put(c, count.getOrDefault(c, 0) 1); } int maxValueInCount = Collections.max(count.values()); // 2 int minValueInCount = Collections.min(count.values()); // 1
isWhiteSpace(char c)
:c
가 공백이면true
, 그렇지 않으면false
!=
,==
를 사용하는 것보다,Objects.equals()
를 사용하는 것이 좋다.- Valid Anagram을 풀었을 때, 동일한 값인데 다른 경우가 있었음.
String Literal
로 할당한 값과String.valueOf
을 이용해서String
객체로 만든 값을 비교할 때도 유용.- 같은 값을 담아도
==
연산자로 비교하면false를
반환. - 같은 값을
Objects.equals()
를 사용할 경우true
를 반환.
- 같은 값을 담아도
- 두 배열이 같은지 확인하기
Arrays.equals()
를 이용하면 된다.
class Pair<L, R> {
L left;
R right;
Pair(L left, R right) {
this.left = left;
this.right = right;
}
@Override
public String toString() {
return "Pair{"
"left=" left
", right=" right
'}';
}
}
- 오름차순 정렬(
left
를 기준으로 오름차순 정렬한다.left
가 같은 경우right
를 기준으로 오름차순으로 정렬한다.)
pairs.sort((o1, o2) -> (!Objects.equals(o1.left, o2.left) ? o1.left - o2.left : o1.right.compareTo(o2.right)));
- 내림차순 정렬(
left
를 기준으로 내림차순 정렬한다.left
가 같은 경우right
를 기준으로 내림차순 정렬한다.)
pairs.sort((o1, o2) -> (!Objects.equals(o1.left, o2.left) ? o2.left - o1.left : o2.right.compareTo(o1.right)));