Programming/Java

Record 란? 불변한 데이터를 표현하기 위한 간결하게 객체를 생성할 수 있도록 하는 유형의 클래스 JDK14에서 preview로 등장해 JDK16에서 정식 스펙으로 포함 public record Point(int x, int y) { } 주요 특징 불변성(Immutable) 레코드는 한 번 생성되면 수정할 수 없다. (데이터의 무결성 유지) 필드 암시적 정의 레코드는 명시적인 필드 정의 없이도 컴파일러가 자동으로 필드를 생성한다. 위 예제에서는 'x' 와 'y' 필드가 생성된다. 'equals()', 'hashCode()', 'toString()' 자동 생성 레코드는 기본적으로 위와 같은 메서드를 자동으로 생성한다. 복사 생성자(Copy Constructor) 자동 생성 레코드는 'with' 키워드를..
문제 네이버 뉴스 검색 API 응답 파라미터 중 "Tue, 13 Jun 2023 22:12:00 +0900" 형태의 문자열을 "yyyyMMddHHmmss" 형태로 변환하기 위해 String(EEE, dd MMM yyy HH:mm:ss Z) -> Date -> String(yyyyMMddHHmmss) 으로 반환해주는 유틸 함수를 만드는 중 Date로 parse하는 도중 java.text.ParseException: Unparseable date 이 발생하여 문제 해결 내용을 기록한다. 오류 발생 소스 public static String dateFormat(String inDate) { String formatDate = ""; SimpleDateFormat format1 = new SimpleDateFo..
Static이란? public static void main(String[] args){ ... } java로 개발하다보면 자주 듣고 보고하는 static 개념정리 Static이란? static은 '정적인, 고정된' 이라는 뜻을 가지고 있다. static이 앞에 붙는 변수나 메소드는 어떤 객체에 소속되는 것이 아닌 클래스에 고정되어 있는 변수나 메소드이다. static int num = 0; // static 변수 public static void staticMethod() { ... } // static 메소드 Static은 아래와 같은 특징을 갖는다. 메모리에 고정적으로 할당된다. Static영역에 할당되며 프로그램 종료시까지 메모리가 할당된 채로 존재한다. Static메소드 내에서는 인스턴스 변수를..
Java 스트림(Stream) 사용 시 주의사항 최근에 Java의 Stream API를 활용하면서 경험했던 오류들에 대한 내용을 정리한다. 1. 스트림의 재사용 말 그대로 한 번 사용했던 스트림을 다시 한번 사용할 경우 발생하는 오류이다. 흔하게 접할 수 있는 실수이므로 주의하자. Stream은 컬렉션이 아니기 때문에 재사용할 수 없다. 예제1) // 문자열 스트림 생성 Stream langNames = Stream.of("Java", "C++", "Python", "Ruby"); // 스트림 내 모든 요소 출력 langNames.forEach(System.out::println); // "Java" 만 제외한 스트림을 다시 생성... Exception이 발생한다. Stream filtered = lan..
Java - 약수의 개수 구하기 (최적의 방법) 최근에 코딩테스트 문제를 풀다가 약수의 개수 관련해서 로직을 작성한 기억이 많다. 그러다 기본적인 방법 외에 조금 더 효율적으로 약수의 개수를 구하는 알고리즘을 만들 순 없을까 하며 찾아보다가 포스팅을 하게 되었다. 💡 일반적인 방법 (방법1) number 의 약수의 개수를 구한다라고 했을 때 가장 일반적인 방법은 number를 1부터 number까지 나누어 나머지가 0 인경우를 판별하여 카운트해주는 방법이다. int number = 123456789; int cnt = 0; for(int i=1; i
Java의 자료구조 - Map의 개념, 활용, 예제 정리 1. Map 이란? - Map은 리스트나 배열처럼 순차적으로 요소의 값을 구하는 것이 아닌 key를 통해 value(값)를 얻는다. Map 인터페이스는 Collection 인터페이스와는 다른 저장 방식을 가진다. Map은 키(key)와 값(value)을 하나의 쌍으로 저장하는 방식(ket-value방식)을 사용한다. 2. Map의 특징 1. 저장 순서를 유지하지 않는다. 2. 키는 중복을 허용하지 않는다. (값의 중복은 허용) 3. Map 활용 put // 1 Map map1 = new HashMap(); map1.put("watch", "시계"); map1.put("whale", "고래"); map1.put("blog", "블로그"); // 2 ..
JAVA - List 중복데이터 제거하는 방법 2가지 최근에 코딩테스트 준비를 하다보면 input으로 주어지는 배열이 자주 등장하는데 로직의 효율성을 위해 중복제거해야 할 경우가 간혹 있었기 때문에 List 중복제거에 대해 기록한다. 1. Stream을 활용한 중복제거 - Java 1.8 이상 List reportList = Arrays.asList(new String[]{"a", "b", "c", "d", "a", "c"}) .stream() .distinct() .collect(Collectors.toList()); // 결과 : [a, b, c, d] 2. Set을 활용한 중복제거 List list = Arrays.asList(new String[]{"a", "b", "c", "d", "a", "c..
[Java] Stream - 자바 스트림 개념 및 사용법 💡 자바 스트림 (Stream ) 자바의 스트림(Stream)은 Java 8에 추가된 기능이다. 컬렉션에 저장되어 있는 요소들을 하나씩 참조하여 람다식으로 처리할 수 있도록 해주는 코드패턴(반복자)이다. 스트림은 람다식과 함께 사용되기때문에 데이터에 대한 처리를 매우 간결하게 작성할 수 있다는 장점과 내부 반복자라는 것을 사용하기 때문에 병렬처리가 쉽다는 장점이 있다. 💡 Iterator 이전까지는 컬렉션의 엘리먼트들을 순회하기 위한 Iterator 객체를 활용하였다. /* Iterator 활용 */ ArrayList arrList = new ArrayList(Arrays.asList("a","b","c","d","f")); Iterator ite..
코딩무니
'Programming/Java' 카테고리의 글 목록