목록알고리즘/Java (6)
동그란 도그린
StringBuilder와 StringBuffer를 사용하는 이유 String의 원본 값은 변경할 수 없음. 불변(immutable) 자료형 아래 코드에서 객체를 수정한 것처럼 보이지만, 사실 또다른 새로운 String 객체를 생성한 것임. String 타입의 문자열을 수정할 때마다 메모리 내의 힙 영역에 값이 변경된 새로운 인스턴스가 생성되므로 메모리 낭비가 될 수 있고, 속도도 느려짐. String str = "hello"; str += "world"; 따라서 문자열 변경 작업이 거의 없을 때는 String을 사용하고, 문자열을 빈번하게 추가, 수정, 삭제하는 경우에는 StringBuilder와 StringBuffer를 사용하는 게 좋음. StringBuilder와 StringBuffer는 내부 Bu..
📍 Deque이란? Double-Ended Queue의 줄임말로, 그림과 같이 큐의 양쪽에서 데이터의 삽입 및 삭제가 가능한 형태의 자료구조 Deque deque1 = new ArrayDeque(); Deque deque2 = new LinkedBlockingDeque(); Deque deque3 = new ConcurrentLinkedDeque(); Deque deque4 = new LinkedList(); 한쪽으로만 입력 가능하도록 설정한 덱을 스크롤(scroll), 한쪽으로만 출력 가능하도록 설정한 덱을 셸프(shelf)라고 함
StringBuilder 클래스의 setLength() 메소드에 0을 전달하여 빈 값으로 초기화 가능 StringBuilder sb = new StringBuilder(); sb.setLength(0);// 빈 값으로 초기화
🔅 Comparable과 Comparator 사용 이유 public class Test { public static void main(String[] args) { Student a = new Student(20, 23);// 20세, 23학번 Student b = new Student(22, 21);// 22세, 21학번 // 두 객체 비교하기 } } class Student { int age; // 나이 int id; // 학번 Student(int age, int id) { this.age = age; this.id = id; } } 위와 같은 상황에서 두 객체를 어떤 기준으로 비교할지 판단할 수 없으므로 이러한 문제를 해결하기 위해 Comparable과 Comparator를 사용함 🔅 Compar..
compareTo()는 두 개의 값(숫자/문자)을 비교하여 int 값으로 반환해준다. 숫자 비교 (Integer) 예를 들어 a=9, b=3이라면, a.compareTo(b)는 1, a.compareTo(9)는 0, a.comparteTo(10)은 -1 을 반환한다. 즉, 기준 값(a)이 비교 대상(b)보다 크면 1, 같으면 0, 작으면 -1을 반환한다. int형 비교 int a=9; int b=3; Integer.compare(a, b); Integer.compare()를 이용한다. 문자 비교 1) 비교 대상에 동일한 문자가 포함되어있는 경우 String str="abcd"; str.compareTo("abcd"); // 일치하는 경우, 0을 반환한다. str.compareTo("aefg"); 2) 비..
Arrays.copyOf()와 Arrays.copyOfRange()를 통해 배열을 복사할 수 있다. Arrays.copyOfRange()는 특정 범위만큼 복사할 수 있다. Arrays.copyOf(복사할 배열, 배열 크기) Arrays.copyOfRange(복사할 배열, 시작 인덱스, 마지막 인덱스) → 시작 인덱스부터 (마지막 인덱스-1)까지 복사된다. 📍 관련 문제 (프로그래머스 - K번째수) https://school.programmers.co.kr/learn/courses/30/lessons/42748