본문 바로가기

Programming/Java

(25)
JAVA ArrayList vs LinkedList 차이점과 선택 기준 자바에서 리스트(List) 형태의 데이터를 저장할 때 가장 많이 사용하는 자료구조는 ArrayList와 LinkedList이다. 두 클래스는 List 인터페이스를 구현하지만 내부 구조와 동작 방식이 다르다. 이번 포스팅에서는 ArrayList와 LinkedList의 차이를 비교하고, 어떤 상황에서 각각을 사용하는 것이 좋은지 알아보겠다.1. 기본 개념ArrayListArrayList는 내부적으로 배열을 사용하여 데이터를 저장한다.인덱스를 이용한 데이터 접근 속도가 빠르다 (O(1)).요소를 추가하거나 삭제할 때 배열을 재구성해야 하는 경우가 있어 속도가 느려질 수 있다 (O(n)).메모리에서 연속된 공간을 차지하므로 캐시 효율성이 좋다.사용 예제List arrayList = new ArrayList();..
JAVA HashMap vs Hashtable vs ConcurrentHashMap 차이점 자바에서 데이터를 Key-Value 형태로 저장할 때 가장 많이 사용하는 자료구조 중 하나가 HashMap과 Hashtable이다. 두 클래스 모두 해시 테이블을 기반으로 데이터를 저장하지만, 중요한 차이점이 있다. 이번 포스팅에서는 HashMap과 Hashtable의 차이를 상세히 알아보고, 언제 어떤 것을 사용해야 하는지 살펴보겠다.1. 기본 개념HashMapjava.util.HashMap은 Map 인터페이스를 구현한 클래스로, Key-Value 쌍으로 데이터를 저장한다.null 키와 null 값을 허용한다.동기화를 제공하지 않으므로 여러 개의 스레드가 동시에 접근하면 문제가 발생할 수 있다.LinkedHashMap과 TreeMap의 부모 클래스이다.HashMap 사용 예제Map hashMap = n..
JAVA 프로그램이 실행되는 흐름 자바 프로그램이 실행되는 과정 세부적 설명자바(Java)는 클래스 및 메서드 기반의 객체 지향 프로그래밍 언어로, 여러 프로세스에서 가장 많이 사용되는 언어 중 하나입니다. 이번 글에서는 자바 프로그램이 실행되는 과정을 쉽게 이해할 수 있도록 단계별로 정리해 보겠습니다.1. 소스 코드 작성 (.java 파일)자바 프로그램은 먼저 .java 파일로 작성됩니다.public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); }}2. 컴파일 (javac) - 바이트코드 생성.java 파일을 자바 컴파일러(javac)를 사용하여 .class 파일(바이트코드)로 변환합니..
Java를 활용한 SFTP 파일 다운로드: 가장 최근 변경된 파일 찾기 SFTP(SSH File Transfer Protocol)를 이용하면 원격 서버에서 파일을 안전하게 업로드 및 다운로드할 수 있습니다. 이번 글에서는 Java의 JSch 라이브러리를 사용하여 SFTP 서버에 연결하고, 가장 최근에 변경된 파일을 찾아 다운로드하는 방법을 소개합니다.1. 프로젝트 설정1.1 Maven 또는 Gradle로 JSch 라이브러리 추가Maven 프로젝트의 경우 pom.xml에 다음 의존성을 추가합니다. com.jcraft jsch 0.1.55Gradle 프로젝트의 경우 build.gradle에 추가합니다.dependencies { implementation 'com.jcraft:jsch:0.1.55'}2. SFTP 서버에서 가장 최근 파일 다운로드하기2.1 J..
Java Collections Framework (JCF) 상세 설명 Java Collections Framework(JCF)는 Java에서 데이터 구조 및 알고리즘을 제공하는 표준화된 프레임워크입니다. JCF는 다양한 컬렉션 클래스와 인터페이스를 제공하여 효율적인 데이터 관리를 가능하게 합니다. 이번 포스팅에서는 JCF의 개념과 주요 구성 요소, 그리고 사용법을 상세히 살펴보겠습니다.1. Java Collections Framework(JCF)란?JCF는 Java의 java.util 패키지에 포함된 컬렉션 관련 클래스 및 인터페이스의 모음으로, 데이터 구조를 쉽게 구현하고 조작할 수 있도록 도와줍니다. 컬렉션은 데이터를 저장하고 관리하는 컨테이너 역할을 하며, 배열보다 더 유연하고 강력한 기능을 제공합니다.JCF의 주요 특징은 다음과 같습니다:일관된 인터페이스: 모든 컬..
자바에서 List 중복 제거 방법 자바에서 List 타입의 데이터에서 중복을 제거하는 방법은 여러 가지가 있습니다.가장 많이 사용되는 방법은 Set을 활용하는 방법과 Stream API의 distinct() 메서드를 사용하는 방법입니다.1. Set을 활용한 중복 제거Set은 중복을 허용하지 않는 자료구조이므로, List를 Set으로 변환하면 자동으로 중복이 제거됩니다.예제 코드import java.util.*;public class RemoveDuplicates { public static void main(String[] args) { List list = Arrays.asList("apple", "banana", "apple", "orange", "banana"); // HashSet을 사용하여 중복 제..
Java에서 Object 타입을 String으로 변환하는 방법 (String) 캐스팅 vs String.valueOf() Java에서 Object 타입의 값을 String으로 변환할 때, 대표적으로 두 가지 방법이 있습니다.(String) value를 사용한 명시적 캐스팅String.valueOf(value) 메서드를 사용하는 방식이 두 가지 방법은 겉보기에는 비슷해 보이지만, 동작 방식과 예외 처리에서 큰 차이가 있습니다. 이번 글에서는 각각의 차이점과 장단점, 그리고 주의해야 할 사항에 대해 알아보겠습니다. 1. (String) 캐스팅을 사용하는 방법Object obj = "Hello";String str = (String) obj;System.out.println(str); // Hello동작 방식(String) obj는 obj가 실제로 String 타입인 경우에만 정상적으로 변환됩니다.만약 obj가 String이 아..
자바 제네릭의 공변, 반공변, 무공변 완벽 이해 제네릭(Generics)은 자바에서 타입의 안전성을 보장하고 코드 재사용성을 높이기 위해 도입된 중요한 기능입니다. 하지만 제네릭을 사용할 때 공변(Covariance), 반공변(Contravariance), 무공변(Invariance) 개념을 이해하지 못하면, 와일드카드(? extends T, ? super T)나 특정 타입 제한을 설정할 때 혼란스러울 수 있습니다. 이번 글에서는 자바에서의 제네릭 변성(Variance)에 대해 쉽게 정리해보겠습니다.1. 공변(Covariance) - ? extends T공변이란 서브타입 관계가 유지되는 것을 의미합니다. 즉, List이 List의 하위 타입으로 간주될 수 있는 경우입니다.예제 코드class Animal { void speak() { System...

반응형