반응형 Java25 [Java] Call by Value (vs) Call by Reference Call by Value vs Call by Reference프로그래밍 언어들의 메서드 매개변수 호출 방식에는 여러가지가 있으며호출 방식은 언어마다 다르게 되어 있습니다. Call by Value 형식과 Call by Reference 형식에 대해 알아보고 전달하는 방식에 대해 알아보겠습니다. Call by ValueCall by Value 는 값을 전달하는 방식을 뜻하며 다르게 말하면 값만 전달하는 방식이라고 볼 수 있습니다. 만약 메서드 A에서 B로 int 변수를 전달한다고 가정한다면넘겨받은 B에서는 어떤 행동을 하던지 변수에는 변함이 없습니다. public static void init() { int a = 10; int b = 20; System.out.println("Befor.. Java 2024. 4. 26. [Java] HashMap 정렬하기 List 오름차순 (Key 정렬) import java.util.*; import java.util.stream.Collectors; public class Main { public static void solution1(String[] sNation, String[] sCapital) { Map map = new HashMap(); for (int i = 0; i s1.compareTo(s2)); for (String ke.. Java 2024. 4. 14. [Java] List -> Map 으로 변환하는 이유 List to Map Java 프로그래밍을 진행할 때 List를 Map으로 변환하는 방법과 그 이유에 대해 알아보겠습니다. 특히, 데이터를 효율적으로 탐색하고 순서를 유지하고자 할 때 이 방식이 어떻게 유용하게 작용하는지 살펴보겠습니다. 문제 상황 예를 들어, 상품 번호 리스트를 기반으로 특정 상품들의 정보를 데이터 베이스에서 조회하는 상황이라고 가정해보겠습니다. 이 때, 상품 번호의 순서대로 상품 정보를 유지하면서 효율적으로 조회하는 방법이 필요합니다. List에서 Map으로 변환하는 이유 Map으로 변환하는 주된 이유는 효율적인 탐색과 순서 유지입니다. List에서 특정 요소를 찾기 위해서는 리스트를 처음부터 끝까지 순회해야합니다. 이는, 탐색 시간이 요소의 수에 비례하여 증가하는 시간 복잡도(O(n.. Java 2024. 4. 5. [Java] Arrays 배열 복사 - copyOf, copyOfRange copyOf, copyOfRange Java에서는 배열을 복사하는 방법은 여러 방법이 존재합니다. for문이나 while문 같이 반복문을 활용하여 직접 값을 하나씩 넣어주는 방법이 있습니다. 또한, Arrays 메서드를 활용하는 방법도 있는데 이에 관해서 알아보겠습니다. copyOf() copyOf( ) 메서드는 Arrays.copyOf(복사할 배열, 복사할 배열의 크기) 로 사용하면 됩니다. 아래 코드를 예시로 확인해보겠습니다. import java.util.Arrays; public class solution { public static void main(String[] args) { int[] arr1 = {1, 2, 3}; int[] arr2 = Arrays.copyOf(arr1, arr1.len.. Java 2024. 3. 22. [Java] Integer Arraylist -> int[] 배열로 변환하는 방법 방법 1 : ArrayList의 값을 배열에 삽입 import java.util.*; public class Main { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(1); list.add(2); list.add(3); list.add(4); int[] arr = new int[list.size()]; for(int i = 0; i < arr.length; i++){ arr[i] = list.get(i).intValue(); } } } 방법 2 : Stream().mapToInt(람다식) import java.util.*; public class Main { public static void main.. Java 2023. 8. 24. [Java] 집합의 특징과 종류 🎁 집합(Set) - 특정 조건에 맞는 원소들의 모임이다. - 집합 표현 방법 (1) 원소 나열법 (2) 조건 제시법 (3) 벤 다이어그램 🎁 집합(Set) 자료형 - 집합(Set) 자료형은 처리하기 위해 만든 것으로 HashSet, TreeSet, LinkedHashSet 있다. 이 중에서 가장 많이 사용되는 건 HashSet이 많이 쓰인다. (1). 중복을 허용하지 않는다. (2). 순서가 없다.(집합 자료형 특성 상 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다. = Map 자료형과 비슷하다) 🎁 교집합 - 두 집합이 공통으로 포함하는 원소로 이루어진 집합이다. HashSet a = new HashSet(Arrays.asList(1,2,3,4,5)); HashSet b = new HashSet(.. Java 2023. 8. 22. [Java] Iterator 개념부터 사용 방법 뿌시기!! 🎁 Iterator 란? 1) 사전적인 의미로 '반복한다' 라는 의미이다. 2) 자바의 컬렉션 프레임워크에서 컬렉션에 저장되어 있는 요소들을 읽어오는 방법 중 하나이다. 🎁 Iterator 함수 기본형 public interface Iterator { boolean hasNext(); Object next(); void remove(); } 1) hasNext() 메소드 : 읽어 올 요소가 남아 있는지 확인하는 메소드 (있으면 true, 없으면 false) 2) next() 메소드 : 읽어온 요소를 확인하는 메소드 3) remove() 메소드 : next()로 읽어온 요소를 삭제 🎁 Iterator 함수 장점 1) 모든 컬렉션 프레임워크(List, Set, Queue, Map 등) 사용 가능하다. 2) .. Java 2023. 8. 21. [Java] Scanner vs BufferedReader, StringTokenizer 🎁 Scanner vs BufferedReader 자바에서 입력 클래스는 대표적으로 Scanner를 쓰는 것을 많이 봤을 것이다. Scanner를 쓰는 것보다 BufferedReader를 사용하면 속도가 빨라진다. BufferedReader는 문자열에 최적화가 되어 있지만, Scanner의 경우는 다양한 기능을 지원하기 때문에 BufferedReader보다 무겁다. ex) Scanner 예시 import java.util.Scanner; Scanner scanner = new Scanner(System.in); int num = scanner.nextInt();//정수형 String str = scanner.nextLine();//문자열 ex) BufferedReader 예시 import java.io... Java 2023. 8. 16. [Java] 람다식과 스트림 목차 📢 람다식 메소드 대신에 하나의 식으로 표현하는 것이다. '익명 함수' 라고도 불린다. ✨ 람다식의 장점 일반적으로 코드가 간결해진다. 코드의 가독성과 생산성이 높아진다. ✨ 람다식의 단점 재사용이 불가능하다.(익명함수이기 때문에) 디버깅이 어렵고 재귀함수로는 맞지 않다. ✨ 익명클래스(추상메소드) 와 익명함수(람다식)의 차이 interface ComputeTool { public abstract int compute(int x, int y); } public class Main { public static void main(String[] args) { //익명 클래스 ComputeTool cTool = new ComputeTool() { @Override public int compute(int.. Java 2023. 8. 10. [Java] 내부 클래스 목차 📢 내부 클래스 클래스 안에 클래스가 있는 형태 중첩 클래스라고 하기도 한다. 🎪 내부 클래스 특징 내부 클래스에서 외부 클래스 멤버 접근 가능 외부에서는 내부 클래스를 접근할 수 없다. 📢 내부 클래스 종류 🎪 인스턴스 클래스(Instance) 외부 클래스 영역에 선언된 클래스 중에서 static 키워드를 가지지 않는 클래스 인스턴스 클래스는 주로 외부 클래스(outer class)의 인스턴스 변수나 인스턴스 메소드에 사용 class Outer{ public void Print(){ System.out.println("Outer.print"); } } public class Main { public static void main(String[] args) { // 외부 클래스 Outer o1 = .. Java 2023. 8. 9. [Java] 인터페이스 목차 📢 인터페이스 다중 상속처럼 사용할 수 있는 기능이다. 추상 메소드와 상수만으로 이루어진다. interface School { //상수 선언 시에 final 필수!! public static final int MAX_CLASS = 20; public static final int MAX_PERSON_PER_CLASS = 40; //추상메소드는 abstract 선언 public abstract void printSchool(); } 📢 인터페이스 클래스 //인터페이스를 이용한 클래스 생성 시에는 implements를 추가해준다. class Student implements School{ public void printSchool(){ System.out.println("University"); } }.. Java 2023. 8. 9. [Java] 추상클래스 📢 추상 메소드 자식 클래스에서 반드시 오버라이딩 해야하는 메소드 선언만 하고 구현 내용이 없다. abstract class Person{ abstract void printIn(); } 📢 추상 클래스 하나 이상의 추상 메소드를 포함하는 클래스이다. 반드시 구현해야하는 부분에 대해 명시적으로 표현이고, 객체 생성이 불가하다. 클래스를 만들 때 이전 부모 클래스의 함수를 선언해주지 않으면 Error 발생 class Student extends Person{ public void printIn(){ System.out.println("Student.printIn"); } } 📢 메인 함수에서의 사용 public class Main { public static void main(String[] args) {.. Java 2023. 8. 9. 이전 1 2 3 다음