목록전체 글 (191)
개발자 도전기

오늘은 List 컬렉션과 ArrayList에 대해서 배웠기 때문에 ArrayList를 활용할 수 있는 leetcode의 1200번 문제 Minimum Absolute Difference를 풀어보았다. 배열에서 모든 요소 중 두 요소의 차가 가장 적은 값을 찾고 두 요소의 차가 가장 적은 값인 모든 요소의 pair를 리스트로 반환하는 문제이다 풀이는 다음과 같다 class Solution { public List minimumAbsDifference(int[] arr) { List list = new ArrayList(); Arrays.sort(arr); int diff = 1000000; for(int i = 0; i
List 컬렉션 List 컬렉션은 객체를 인덱스로 저장, 관리한다. List 컬렉션에는 ArrayList, Vector, LinkedList 등이 있으며 List 컬렉션에서 공통으로 사용 가능한 List 인터페이스 메소드는 다음과 같다. 기능 메소드 설명 객체 추가 boolean add(E e) 주어진 객체를 맨 끝에 추가 void add(int index, E element) 주어진 인덱스에 객체를 추가 set(int index, E elemetn) 주어진 인덱스의 객체를 새로운 객체로 변경 객체 검색 boolean contains(Object o) 주어진 객체가 저장되어 있는지 여부 E get(int index) 주어진 인덱스에 저장된 객체를 리턴 isEmpty() 컬렉션이 비어 있는지 조사 int ..
자바는 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘 바탕으로 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 관련한 인터페이스와 클래스들을 구현해놓았다. 이들을 총칭해서 컬렉션 프레임워크(Collection Framework)라고 부른다. 컬렉션 프레임워크의 주요 인터페이스로는 List, Set, Map이 있다. List, Set은 객체를 추가, 삭제, 검색하는 방법에 있어서 공통점이 있기 때문에 공통된 메소드만 따로 모아 Collection 인터페이스로 정의해 두고 이것을 상속하고 있다. 컬렉션 프레임워크에 속하는 인터페이스를 구현한 클래스는 컬렉션 클래스(collection class)라고 한다. 인터페이스 분류 특징 구현 클래스 Collection List - 순서를 유지하고 저장 -..
오늘은 정규표현식에 대해 공부하였다! 2024.03.15 - [개발공부/JAVA] - [JAVA] 정규표현식(regex) [JAVA] 정규표현식(regex) 정규표현식이란? 문자열을 다룰 때, 문자열의 일정한 패턴을 표현하는 일종의 형식 언어이다. 문자열이 정해져 있는 형식으로 구성되어 있는지 검증할 때 사용한다. 정규표현식 작성 방법 표현 abc-datatype.tistory.com
정규표현식이란? 문자열을 다룰 때, 문자열의 일정한 패턴을 표현하는 일종의 형식 언어이다. 문자열이 정해져 있는 형식으로 구성되어 있는지 검증할 때 사용한다. 정규표현식 작성 방법 표현 및 기호 설명 표현 및 기호 설명 ^ 정규 표현식 시작 * 없음 또는 한 개 이상 $ 정규 표현식 끝 + 한 개 이상 [] 한 개의 문자 {n} 정확히 n개 \d 한 개의 숫자, [0-9]와 동일 {n,} n개 이상 \s 공백 {n,m} n부터 m개까지 \w 한 개의 알파벳 또는 한 개의 숫자, [a-zA-Z0-9]와 동일 a|b a 또는 b \. . [abc] a, b, c 중 하나의 문자 . 모든 문자 중 한 개의 문자 [^abc] a,b,c 의외의 하나의 문자 ? 없음 또는 한 개 () 그룹핑 [a-z] : 소문자 ..

오늘 배운 람다식을 사용해서 , 람다식을 매개변수로 받을 수 있는 Arrays.sort() 함수의 정렬값을 임의로 바꾸는 방법을 배웠다. 처음 배우는 내용들이 많아서 헷갈리지만 내가 이해한 내용을 적자면, import java.util.*; class Solution { public String[] solution(String[] strings, int n) { Arrays.sort(strings,(a,b) -> { if(a.charAt(n) == b.charAt(n)){ return a.compareTo(b); } else { return a.charAt(n) - b.charAt(n); } }); return strings; } } Arrays.sort()는 두번째 매개변수가 null이라면 natura..
자바는 객체 지향 프로그래밍을 기반으로 하고 있지만 함수형 프로그래밍을 위한 구현체들을 만들어두었다. StreamAPI나 람다식 등이 이에 해당된다. 람다식이란? 함수형 인터페이스(Functional Interface)의 익명 구현 객체를 간단하게 표현하는 방법을 말한다. 함수형 인터페이스란 단 하나의 추상 메소드만 가지고 있는 인터페이스이다. @FunctionalInterface 어노테이션을 인터페이스 선언부 위에 붙여서 인터페이스가 함수형 인터페이스인지 확인할 수 있다. (매개변수) -> { 처리내용 }; (x, y) -> { 처리내용 }; 람다식은 인터페이스의 익명 구현 객체이므로 인터페이스 타입의 매개변수에 대입될 수 있고 주로 Stream 연산에 활용된다. 람다식으로 표현하기 익명 구현 객체는 ..
오늘은 람다식을 배우기 전 중첩 클래스와 중첩 인터페이스, 그리고 익명 객체에 대해서 배웠다. 그 전에 비하면 슬슬 개념이 헷갈릴 정도로 어려워지기 시작했다... 개념서를 여러번 읽어보는 것도 도움이 되지만 직접 코드를 쓰면서 해당 코드에 익숙해지는 것도 중요한 것 같다. 새로운 문법을 배울 때에는 아무래도 낯설어서 더 어렵게 느껴지는 것 같다. 다음부터는 개념서에 적힌 예제만 익히지 않고 직접 코드를 만들어 사용할 수 있도록 해야겠다는 생각이 든다 내일은 람다식을 배울 예정인데, 어려울 것 같긴 하지만 예전부터 코드가 너무 간지난다고 생각했기 때문에(ex. 삼항연산자) 기대가 된다😂 TIL 2024.03.12 - [개발공부/JAVA] - [JAVA] 중첩 선언(중첩 클래스, 중첩 인터페이스) [JAVA..
선행 학습 2024.03.12 - [개발공부/JAVA] - [JAVA] 중첩 선언(중첩 클래스, 중첩 인터페이스) [JAVA] 중첩 선언(중첩 클래스, 중첩 인터페이스) 중첩클래스 클래스 내부에 선언하는 클래스를 중첩클래스라 한다. 중첩 클래스가 여러 클래스와 관계를 맺는 것이 아닌 특정 클래스만 관계를 맺을 경우에는 해당 클래스의 중첩 클래스로 선언 abc-datatype.tistory.com 익명 객체란? 익명 객체는 이름이 없는 객체를 말한다. 명시적으로 클래스를 선언하지 않고 객체를 생성하기 때문에 주로 필드값, 로컬 변수값, 매개변수값으로 사용된다 public class C01AnonymousClass { // 익명클래스의 객체 C01MyClass obj = new C01MyClass() { }..
중첩클래스 클래스 내부에 선언하는 클래스를 중첩클래스라 한다. 중첩 클래스가 여러 클래스와 관계를 맺는 것이 아닌 특정 클래스만 관계를 맺을 경우에는 해당 클래스의 중첩 클래스로 선언하는 것이 유지보수의 도움이 된다. 중첩 클래스의 장점 유지보수가 용이하다 클래스의 멤버를 쉽게 사용할 수 있다 외부에는 중첩 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다 클래스는 선언하는 위치에 따라 두 가지로 분류된다 분류 선언 위치 멤버 클래스 클래스 내부 로컬 클래스 클래스의 메소드 내부 중첩 클래스도 하나의 클래스이기 때문에 컴파일하면 바이트코드 파일(.class)이 별도로 생성된다 // A: 바깥 클래스 , B : 멤버 or 로컬 클래스 A $ B .class // 멤버 클래스일 경우 A $1 B .cl..