Algorithm

코딩테스트를 위한 Java 문법 정리

limcy423 2025. 10. 22. 00:00
업데이트 중 ...

 

Wrapper Class

Integer

  • method
기능 method description
형변환(숫자<->문자) Integer.parseInt(s)
Integer.toString(n)
 

String 

  • method
feature method description
길이 s.length()  
인덱스로 문자 조회 s.charAt(index)  
문자로 인덱스 조회 s.indexOf(s2)
s.lastIndexOf(s2)
 
분할 s.substring(stratIndex)
s.substring(startIndex, endIndex)
 
치환 s.replace(target , replacement)
s.replaceAll(regex, replacement)
s.replaceFirst(regex, replacement)
 
값 일치 여부 s.equals(s2) String은 reference 객체이므로 == 로 비교하면 주소값을 비교하기 때문에 값 비교는 equals을 사용함.
포함 여부 s.contains(s2)  
사전순 비교 s.compareTo(s2) 사전순으로 s1이 s2보다
앞이면 -1, 같으면 0, 뒤면 1 반환.
마지막 문자만 다르다면, 마지막 문자의 사전순 차이 반환.
병합 String.join("", s)  
분리 s.split(delimeter)  
공백 제거 s.trim() 앞 뒤 공백 제거.

 

StringBuilder

String은 한 번 만들어지면 문자 추가, 삭제가 불가능하기 때문에(새로운 객체를 만들어 할당) 변경이 필요하면 StringBuilder를 사용한다.

  • method
feature method description
추가 sb.append(s)  
삽입 sb.insert(index, s)  
삭제 sb.delete(start, end)  
변경 sb.replace(start, end, str)  
뒤집기 sb.reverse()  
길이 변경 sb.setLength(n) n이 원래 길이보다 길 때 뒤가 공백으로 채워짐.

 

Array

  • 정렬
    • 오름차순 
      • Arrays.sort(array) 
    • 내림차순
      • primitive type을 담고 있는 경우
        • Arrays.sort(Arrays.stream(array).boxed().toArray(), Collections.reverseOrder()) 
          +) Collction.reverseOrder()은 wrapper type에만 사용할 수 있으므로, boxing 후에 사용해야 한다.
        • Arrays.sort(Arrays.stream(array).boxed().toArray(), (a, b)->b-a))
      • wrapper type을 담고 있는 경우
        • Arrays.sort(array, Collection.reverseOrder())
    • 다른 기준
      • Arrays.sort(array, (o1, o2)->(o1, o2).compareTo(o1+o2))

Collections

List, Set, Queue를 상위 인터페이스로 가지는 데이터의 집합 혹은 그룹

  • method
    • Collections.max(collection)
    • Collections.min(collection)
    • Collections.reverse(collection)
    • Collections.frequency(list, target) // target count
  • 정렬
    • Collections.sort(collection) // 오름차순
    • Collection.sort(collection, Collections.reverseOrder()) // 내림차순

List

Stack, Vector, ArrayList의 상위 인터페이스로, 순서가 있고 중복을 허용한다.

  • method
feature method description
추가/삽입 list.add(x)
list.add(index, x)
list.addAll(list2)
 
값으로 인덱스 조회 list.indexOf(x)
list.lastIndexOf(x)
 
특정 값 삭제 list.remove(index)
list.remove(x)
 
크기 list.size()  
포함 여부 list.contains(x)
list.containsAll(x)
 
비었는지 여부 list.isEmpty()  
차집합 list.removeAll(list2)  
교집합 list.retation(list2)  
비우기 list.clear()  
람다식으로 요소 제거 list.removeIf(x->x.equals(y))  
  • 변환
    • Array <-> List 변환
      1. 둘 다 wrapper type을 담고 있는 경우
        • Array -> List
          • Arrays.asList(array)
        • List -> Array
          • list.toArray()
      2. Array는 primitive type, List는 wrapper type을 담고 있는 경우
        • Array -> List
          • Arrays.stream(array).boxed().collect(Collectors.toList())
        • List -> Array
          • list.stream().mapToInt(x->x).toArray() // Integer to int의 경우

Sort

Array

Arrays.sort(arr);

// 래퍼타입만 사용 가능
Arrays.sort(arr, Collections.reverseOrder());
Arrays.sort(arr, (a, b) -> b.compareTo(a)); // 내림차순


Arrays.sort(arr, (a, b) -> {
    if (a[0] == b[0]) return Integer.compare(a[1], b[1]);
    return Integer.compare(a[0], b[0]);
});

 

Collections

// Collections
Collections.sort(list);
Collections.sort(list, Collections.reverseOrder());
Collections.sort(list, (a, b) -> { b.compareTo(a) }); // 내림차순

// List
list.sort();
list.sort(Collections.reverseOrder());
list.sort((a, b) -> b.compareTo(a)); // 내림차순

// Map
List<Map.Entry<String, Integer>> entries = new ArrayList<>(map.entrySet());

entries.sort(Map.Entry.comparingByValue());
entries.sort(Map.Entry.comparingByValue().reversed());

entries.sort(Map.Entry.comparingByKey());
entries.sort(Map.Entry.comparingByKey().reversed());