분류 전체보기

    Java ConcurrentModificationException

    Java ConcurrentModificationException

    컬렉션 프레임워크에서 런타임 예외를 보다가 예전에 게임을 만들면서 발생했던 ConcurrentModificationException이 있어서 공부해보기로 했다. 그 때 당시 배열을 조회하는 도중에 추가 및 삭제가 발생되어서 생기는 예외라고 들어서 iterator의 remove()를 사용하여 삭제는 해결했고, 삽입같은 경우는 딜레이를 줘서 예방했던 기억이 있다. 💻 먼저 설명하기 전에 iterator가 무엇인지 알아보자. 자바 컬렉션 프레임워크에서 컬렉션에 저장되어 있는 요소를 읽어오는 방법을 표준화했는데 그것이 Iterator이다. 그래서 컬렉션 인터페이스에는 Iterator를 구현한 클래스의 인스턴스를 반환하는 iterator()가 있다. 🤔 ConcurrentModificationException이란..

    컬렉션 프레임워크(Collections Framework)

    컬렉션 프레임워크(Collections Framework)

    컴퓨터가 효율적으로 자료를 처리하기 위해서는 문제를 자료구조 측면에서 분석하고 구성하여 더 좋은 프로그램을 작성해야 한다. 즉, 프로그래머가 문제를 보다 효율적으로 해결하기 위해서는 자료구조에 대한 개념과 활용능력을 가지고 있어야 한다는 말이다. 🤔 자료구조(Data Structure)란 무엇인가? 우리는 엄청난 양의 자료 속에서 살아가고 있다. 이런 자료를 효율적으로 표현하고 저장하고 처리하여 사용할 수 있도록 하는 것이 자료구조이다. 형태에 따른 자료구조 정수, 실수, 문자, 문자열 등의 데이터 타입에 해당하는 단순구조 단순구조와 일대일 관계를 가지는 선형구조 자료간의 앞뒤 관계가 일대일로 고정되어 있는 자료구조 일대다, 다대다 관계의 비선형구조 자료 간에 선형구조가 아닌 계층(hierarchical..

    [백준] 2562번 - Java(자바)

    [백준] 2562번 - Java(자바)

    백준 2562번 자바 https://www.acmicpc.net/problem/2562 2562번: 최댓값 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어 www.acmicpc.net 알고리즘 100보다 작은 9개의 서로 다른 자연수를 입력받는다. ( 1줄 1개 ) 이 중 최댓값을 찾고 몇 번째인지 출력하기. 1. 9번 반복문을 돌린다. 2. 반복하여 입력받을때마다 최댓값을 비교한다. 3. 최댓값이 맞으면 max에 값을 넣어주고, 몇 번째 돌렸을 때인지 count에 값을 넣어준다. 4. max와 count를 출력한다. 풀이1..

    [백준] 10818번 - Java(자바)

    [백준] 10818번 - Java(자바)

    백준 10818번 자바 https://www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 알고리즘 정수 N을 받는다. [ 1 ≤ N ≤ 1,000,000 ] N개의 정수값를 공백으로 구분해서 받는다. [ -1,000,000 ≤ 정수값 ≤ 1,000,000 ] 받은 정수값에서 최소값과 최댓값을 출력한다. 1. 정수 N을 입력받는다. 2. 최댓값 = -1,000,000 , 최소값 = 1,000,000 초기화 3. N번 만큼 입력받..

    Java 언박싱 형변환

    Java 언박싱 형변환

    Java의 언박싱(unboxing) 형변환 Java 8 Language Specification 5.1.8 Unboxing Conversion Chapter 5. Conversions and Contexts class Point { int x, y; } interface Colorable { void setColor(int color); } class ColoredPoint extends Point implements Colorable { int color; public void setColor(int color) { this.color = color; } } final class EndPoint extends Point {} class Test { publ docs.oracle.com 언박싱(unbox..

    함수형 인터페이스(Functional Interface)란 무엇인가?

    함수형 인터페이스(Functional Interface)란 무엇인가?

    https://ssdragon.tistory.com/14 람다식이란? 람다식(Lambda Expressions) 메서드를 하나의 식(expression)으로 표현한 것! 이름이 없는 메서드! 메서드를 람다식으로 표현하면 메서드 이름과 반환값이 없어지므로 익명 함수(anonymous function)라고도 부 ssdragon.tistory.com 위 글의 연장선이다. 함수형 인터페이스에 대해 설명하다보면 람다식이 나오니까 꼭 먼저 읽어보자. 🤔 함수형 인터페이스(Functional Interface) 란 무엇인가? 이것은 하나의 추상 메서드만을 갖는 인터페이스(Interface)이다. 그래야지 람다식과 인터페이스의 메서드가 1:1로 연결될 수 있기 때문이다!! 이 추상 메서드의 매개변수의 개수와 타입, 리..

    스프링부트 라이브러리 살펴보기

    스프링부트 라이브러리 살펴보기

    명령 프롬프트 창으로 라이브러리 확인하기 cmd 명령 프롬프트창에서 스프링 프로젝트 파일이 있는 경로로 들어간다. 그 후 gradlew dependencies 를 입력하면 의존 관계를 출력한다. IntelliJ로 라이브러리 확인하기 External Libraries는 가지고 온 라이브러리들이다. 우리가 Dependencies에 추가한 것 말고도 많은데 이것들은 기본적으로 빌드 툴(Maven, Gradle)이 의존관계를 다 관리해주기 때문이다. 즉, 우리가 설정한 라이브러리에 필요한 라이브러리들을 자동적으로 가지고 온다. Gradle 의존관계 보기 우측에 보면 Gradle 버튼이 있는데 누르면 Gradle의 Dependencies에서 의존 관계를 볼 수 있다. 이름 옆에 (*) 이 있는 것은 다른 곳에서 ..

    람다식이란?

    람다식이란?

    람다식(Lambda Expressions) 메서드를 하나의 식(expression)으로 표현한 것! 이름이 없는 메서드! 메서드를 람다식으로 표현하면 메서드 이름과 반환값이 없어지므로 익명 함수(anonymous function)라고도 부른다. 특히 메서드가 1번만 사용되고 메서드 길이가 짧은 경우 매우 유용하다. 자바에서 메서드(함수)는 혼자서 생존할 수 없다. 객체가 아니기 때문에 클래스도 만들어야 하고, 객체도 생성해야 쓸 수 있다. 하지만 람다식으로 인해 변수처럼 스스로 존재하며 매개변수로 전달하거나 결과로 반환될 수 있다. 즉, 람다식으로 메서드(함수)는 객체로 취급된다는 말이다. 람다식으로 작성하기 메서드를 람다식으로 바꿔보자 먼저 메서드 이름과 반환 타입을 제거하고 매개변수와 몸통 { } 사..