728x90
반응형

문자열 3

[Effective Java] 아이템 63. 문자열 연결은 느리니 주의하라.

🎯 아이템 63. 문자열 연결은 느리니 주의하라. 문자열 연결 연산자로 문자열 n개를 잇는 시간은 n^2에 비례한다. 문자열 연결을 잘못 사용한 예 - 느리다! public String statement(){ String result = ""; for(int i = 0; i < numItems(); i++) result += lineForItem(i); return result; } 품목이 많을 경우 이 메서드는 심각하게 느려질 수 있다. 성능을 포기하고 싶지 않다면 String 대신 StringBuilder를 사용하자. StringBuilder를 사용하면 문자열 연결 성능이 크게 개선된다. public String statement2(){ StringBuilder b = new StringBuilder..

Java 2023.03.28

[Effective Java] 아이템 62. 다른 타입이 적절하다면 문자열 사용을 피하라.

🎯 아이템 62. 다른 타입이 적절하다면 문자열 사용을 피하라. 1️⃣ 문자열은 다른 값 타입을 대신하기에 적합하지 않다. 받는 데이터가 수치형이라면 int, float, BigInteger 등 적당한 수치 타입으로 변한해야한다. &#39;예/아니오&#39; 질문의 답이라면 적절한 열거 타입이나 boolean으로 변환해야 한다. 2️⃣ 문자열은 열거 타입을 대신하기에 적합하지 않다. 3️⃣ 문자열은 혼합 타입을 대신하기에 적합하지 않다. 혼합 타입을 문자열로 처리한 부적절한 예 String compoundKey = className + "#" + i.next(); 4️⃣ 문자열은 권한을 표현하기에 적합하지 않다. @Entity public class Member { @Id private Long id; ..

Java 2023.03.28

[자료구조] Trie

🎯 Trie 트라이(Trie)는 검색 트리의 일종으로, 문자열 탐색에 사용되는 자료 구조입니다. 트라이는 문자열을 이진 검색 트리(Binary Search Tree)처럼 저장하지 않고, 각 노드의 문자열을 표현합니다. 이러한 방식으로 트라이는 문자열 검색 및 삽입에서 높은 성능을 보이며, 특히 문자열 검색에 대해 O(m)의 시간 복잡도를 가집니다. (m은 검색하는 문자열의 길이입니다.) Trie의 구조 ⭐️ {"A", "to", "tea", "ted", "ten", "i", "in", "inn"} 을 트라이로 구현 트라이는 문자열을 탐색하기 위한 자료구조이므로 문자열 탐색을 위해서는 다음 글자에 해당하는 노드를 타고 따라가면 된다. 또 트라이의 중요한 속성 중 하나는 루트에서부터 내려가는 경로에서 만나는..

자료구조 2023.03.26
728x90
반응형