의문점 공부하기 102

📌 그렇다면 각각 어떤 상황에서 HashMap과 TreeMap을 선택하는가?!

HashMap: 빠른 검색 및 삽입: HashMap은 해시 함수를 사용하여 키-값 쌍을 저장하므로, 키를 기반으로 빠른 검색과 삽입이 가능해시 함수의 성능에 따라 검색 및 삽입 성능이 달라질 수 있다. 정렬된 순서 필요 없음: HashMap은 키의 순서를 보장하지 않음, 키-값 쌍이 삽입된 순서에 따라 저장되지만, 순서를 유지하지 않아, 정렬된 순서가 필요하지 않은 경우에 적합 중복된 키 허용하지 않음: HashMap은 중복된 키를 허용하지 않음, 동일한 키로 여러 값을 저장하려고 하면 마지막으로 삽입된 값으로 덮어씌워진다 TreeMap: 정렬된 순서 필요: TreeMap은 이진 검색 트리를 기반으로 키-값 쌍을 저장하며, 키를 기준으로 정렬된 순서를 유지 => 정렬된 순서가 필요한 경우에 적합 범위 검..

📌 HashMap과 Hashtable의 차이는?!

HashMap과 Hashtable은 모두 Map 인터페이스를 구현한 자료구조이지만, 차이점이 존재!! 1. 동기화(Synchronization): Hashtable은 동기화되어 스레드 안전 자료구조, 여러 스레드가 동시에 Hashtable에 접근하더라도 내부적으로 동기화되어 안전한 작업을 보장 HashMap은 동기화되지 않아 스레드 안전성을 보장하지 않음, = HashMap은 단일 스레드 환경에서 사용하기에 적합. 2. Null 허용: Hashtable은 키(key)와 값(value)으로 null을 허용하지 않음, Hashtable에 null을 넣으려고 하면 NullPointerException이 발생 HashMap은 키와 값 모두 null을 허용, HashMap이 더 유연하게 사용될 수 있음을 의미 3..

📌 List, Set, Map의 차이점은!?

▶List : - 순서가 있는 데이터의 집합, 데이터를 추가한 순서대로 저장하며 중복된 데이터를 허용 - 데이터에 접근할 때는 인덱스(0부터 시작)를 사용하여 요소에 접근 가능 ArrayList, LinkedList 등의 구현체가 존재 ▶Set : - 순서가 없는 데이터의 집합, 데이터를 추가한 순서와는 관계없이 저장하며, 중복된 데이터를 허용하지 않음 - 데이터의 유일성을 보장하기 위해 사용 - HashSet, TreeSet 등의 구현체가 존재 ▶Map : - Key-Value 쌍으로 데이터를 저장, 각각의 Key는 유일해야 하며, Value는 중복 가능 - Key를 통해 값을 검색하고, Key-Value 쌍을 추가하거나 삭제할 수 있다 - HashMap, TreeMap 등의 구현체가 있습니다. Lis..

📌 Collection과 Collections의 차이는 무엇일까?

Collection과 Collections의 차이는 Collection - Collection은 자바 컬렉션 프레임워크의 인터페이스 - 이 인터페이스는 여러 객체를 저장하고 관리하는 데 사용된다 - Collection은 객체들을 단순히 그룹화하고, 중복을 허용하며, 순서를 유지하지 않는 컬렉션을 나타낸다. - Collection은 다양한 하위 인터페이스를 가지고 있으며, 가장 일반적인 하위 인터페이스로는 List, Set, Queue 등이 있다. Collections - Collections는 자바의 유틸리티 클래스 - 이 클래스는 자바 컬렉션 프레임워크를 사용하여 작업을 수행하는 데 도움이 되는 메서드를 제공 - Collections 클래스에는 컬렉션을 정렬, 검색, 조작하는 데 사용되는 다양한 메서드..

📌 자바 컨테이너란 무엇일까?

▶컨테이너란? 컴포넌트를 포함 할 수 있는 특별한 GUI 컴포넌트 -> 자바 GUI 응용 프로그램의 화면은 GUI 컴포넌트 들로 구성, 역할에 따라 컨테이너와 순수 컴포넌트로 분류, 다른 GUI 컴포넌트를 포함 할 수있는 컴포넌트를 컨테이너라 칭함 컨테이너가 되기 위해선 java.awt.Container 클래스를 상속받아야 한다 container 클래스는 java.awt.Component를 상속받기에 컨테이너 또한 컴포넌트다,,! => 컨테이너는 다른 컨테이너에 컴포넌트로 포함 될 수 있다

📌 final은 추상 클래스를 수정할 때 사용할 수 있을까?

▶ 자바에서 final 키워드는 추상 클래스를 수정하는 데 사용할 수 없다..!. final 키워드를 사용하면 해당 클래스 또는 메소드를 더 이상 수정할 수 없게 되는데, 추상 클래스는 상속을 통해 구체화되어야 한다 => 수정 가능해야 함..! 따라서 추상 클래스를 수정할 때는 final 키워드를 사용하지 않아야 한다..!

📌 보통의 클래스와 추상 클래스의 차이는 뭘까?

자바에서 일반적인 클래스와 추상 클래스의 차이: 보통의 클래스는 구체적인 데이터를 담아 인스턴스화하여 직접 다루는 클래스 추상 클래스는 추상적인 데이터를 담고 있는 클래스로, 하나 이상의 추상 메소드를 포함 추상 메소드는 자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드, 추상 메소드를 포함한 추상 클래스를 상속받는 자식 클래스는 추상 메소드를 반드시 구현해야만 인스턴스를 생성할 수 있다 자바에서 추상 클래스와 추상 메소드를 사용하는 목적: 추상 클래스를 사용하여 다형성을 가지는 메소드의 집합을 정의할 수 있기 때문, 다형성은 객체 지향 프로그래밍에서 중요한 개념으로, 상속 관계에 있는 클래스들이 동일한 메소드를 가지고 있을 때, 각 클래스에서 메소드를 재정의하여 다양한 동작을 구현할 수 있..

📌 인터페이스는 객체 사용 규칙을 정의한다

그럼 인터페이스와 상속은 다른것인가? ▶자바에서 인터페이스와 상속은 다른 개념이다 ! 인터페이스: 공통 기능을 추상화하여 표준으로 만들어놓은 것이다 인터페이스는 다중 상속이 가능하며, 구현체가 아니라 구현체를 위한 규약을 제공한다. 인터페이스는 추후에 변경될 수 있는 기능을 정의하고, 해당 인터페이스를 구현하는 클래스에서 실제 동작을 구현한다 인터페이스를 사용하면 추후에 변경이 필요한 경우, 해당 인터페이스를 구현하는 클래스만 수정하면 되므로 소스 코드 수정이 간편해진다(유지 보수에 용이!) ex) DB 연결, SQL 쿼리 생성, 쿼리에 인자 전달과 같은 공통 기능을 인터페이스로 정의하면, 추후에 DB가 변경되더라도 인터페이스를 지켜주는 클래스만 수정하면 된다 - implements public inte..

📌 추상 클래스에서 추상 메서드는 필수적인가?

▶먼저 추상 클래스란? 자바에서 하나 이상의 추상 메서드를 포함하는 클래스를 뜻한다 추상 메서드란 메서드의 선언부만 존재하고 중괄호 {} 가 없는 메서드로, 해당 메서드를 포함한 추상 클래스를 상속받는 자식 클래스에서 반드시 구현해야 한다 추상클래스를 선언할 때는 abstract 키워드가 붙어야한다 추상 클래스를 사용하는 이유는 객체 지향 프로그래밍에서 중요한 특징인 다형성을 가지는 메소드의 집합을 정의 할 수 있도록 해주기 때문이다 추상 클래스를 상속받는 자식 클래스들은 추상 메서드를 반드시 구현해야 하므로, 해당 메서드를 사용할 때 일관성을 유지할 수 있다 추상 클래스를 상속받는 자식 클래스들은 공통적으로 필요한 메서드들을 추상 클래스에 미리 정의 해놓을 수 있으므로 코드 재사용성이 높아진다 ▶추상 ..

📌 String 클래스의 일반적인 메서드는 무엇이 있을까?

-String 클래스는 문자열을 다루기 위한 클래스 문자열 연산 concat(String str): 문자열을 이어붙입니다. substring(int beginIndex): 시작 인덱스부터 문자열 끝까지의 부분 문자열을 반환합니다. substring(int beginIndex, int endIndex): 시작 인덱스부터 끝 인덱스까지의 부분 문자열을 반환합니다. replace(char oldChar, char newChar): 문자열 내의 특정 문자(oldChar)를 다른 문자(newChar)로 바꿉니다. trim(): 문자열의 앞 뒤 공백을 제거합니다. toUpperCase(): 문자열을 대문자로 변환합니다. toLowerCase(): 문자열을 소문자로 변환합니다 charAt(int index): 주어진..