반응형

프로그래밍 언어 18

Collectors.toUnmodifiableList() 불변 리스트

.toUnmodifiableList() 란? .toUnmodifiableList는 자바 10부터 추가된 기능 중 하나로, java.util.stream.Stream 인터페이스에서 제공하는 메소드 중 하나입니다. 이 메소드는 스트림에서 요소를 수집하여 변경 불가능한 리스트(java.util.List)로 반환합니다. 반환된 리스트는 요소를 추가, 수정, 삭제할 수 없으므로, 불변성을 보장합니다. 다음과 같이 스트림을 생성하고, toUnmodifiableList 메소드를 호출하여 변경 불가능한 리스트를 생성할 수 있습니다. toList() 메소드는 스트림에서 수집한 요소를 리스트로 반환합니다. 하지만 toList() 대신 toUnmodifiableList()를 호출하면, 반환된 리스트는 변경할 수 없습니다. ..

[Kotlin] Day 3: Intro to Conditional Statements (HackerRank - 30 Days of Code)

Objective In this challenge, we learn about conditional statements. Check out the Tutorial tab for learning materials and an instructional video. Task Given an integer, , perform the following conditional actions: If is odd, print Weird If is even and in the inclusive range of to , print Not Weird If is even and in the inclusive range of to , print Weird If is even and greater than , print Not W..

[Kotlin] Day 2: Opterators (HackerRank - 30 Days of Code)

Objective In this challenge, you will work with arithmetic operators. Check out the Tutorial tab for learning materials and an instructional video. Task Given the meal price (base cost of a meal), tip percent (the percentage of the meal price being added as tip), and tax percent (the percentage of the meal price being added as tax) for a meal, find and print the meal's total cost. Round the resu..

[Kotlin] Day 0: Hello, World. (HackerRank - 30 Days of Code)

Objective In this challenge, we review some basic concepts that will get you started with this series. You will need to use the same (or similar) syntax to read input and write output in challenges throughout HackerRank. Check out the Tutorial tab for learning materials and an instructional video! Task To complete this challenge, you must save a line of input from stdin to a variable, print Hell..

코틀린(Kotlin) 진법 변환 .toInt()

문자열 -> N진법 변환 코틀린에서 문자열을 N진법으로 변환하는 방법은 .toInt() 함수를 사용하는 방법이 있습니다. 코틀린 라이브러리를 확인해 보면 코틀린 1.1 버전부터 사용이 가능하며, 내부적으로는 자바의 .parseInt() 함수를 사용하고 있습니다. /** * Parses the string as an [Int] number and returns the result. * @throws NumberFormatException if the string is not a valid representation of a number. * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conve..

자바(JAVA) - Scanner & BufferedReader

자바(JAVA) - Scanner & BufferedReader 자바를 처음 배울 때 사용자(키보드) 입력받기 위해 보통 Scanner 클래스를 사용합니다. 하지만 알고리즘을 풀기 시작하면서 백준에서 Scanner를 사용하여 입력을 받으면 시간초과가 발생하는 경험을 하게 됩니다. 그래서 다른 방법을 찾다 보면 BufferedReader를 접하게 됩니다. Scanner와 BufferedReader 클래스는 둘 다 사용자(키보드) 입력을 받을 수 있는 기능을 제공합니다. 두 클래스가 가지고 있는 함수들에도 많은 차이가 있지만 가장 큰 차이는 속도입니다. Scanner와 BufferedReader의 사용법 import java.util.Scanner; public class Input { public stat..

자바(JAVA) - Interface default & static method

jdk 1.8(java 8)부터 인터페이스에 default method와 static method가 추가되었습니다. 이전 버전에서는 인터페이스는 오직 추상 메서드만 가질 수 있었습니다. default method 인터페이스에 새로운 메서드를 추가하거나 변경하게 되면 해당 인터페이스를 구현하는 모든 클래스들이 해당 메서드를 새로 구현해야 하는 불편함이 존재하였습니다. 그래서 이를 해결하기 위해 인터페이스에 default 메서드 기능을 추가하였습니다. 인터페이스는 추상 메서드만을 갖는 원칙이 있었습니다. 여러 인터페이스들간의 충돌을 방지하기 위해 추상 메서드만을 사용하도록 하였습니다. 하지만 default 메서드는 추상 메서드가 아닌 인스턴스 메서드로 '{ }' 바디를 가질 수 있습니다(구현될 수 있다). ..

자바(JAVA) - Optional

Optional은 jdk 1.8(java 8)부터 추가된 기능입니다. Optional 클래스는 제네릭 타입의 클래스이며 타입 파라미터로 T 타입을 사용되며 T 타입의 참조 변수 value가 있습니다. public final class Optional { private final T value; ... } 제네릭 타입은 데이터 형식에 의존하지 않고, 모든 데이터 타입을 갖도록 하는 방법입니다. 클래스에서 미리 타입을 지정하지 않고 사용자에 의해 지정됩니다. 제네릭을 사용하게 되면 컴파일 타임에 강한 타입 체크가 가능하며, 외부에서 타입을 지정하여 캐스트가 불필요한 장점 등이 있습니다. 성능 향상을 위해 기본타입은 OptionalInt, OptionalDouble과 같은 래퍼 클래스들을 사용하는 것이 좋습니..

자바(JAVA) - 람다식(Lambda Expression)

람다식(Lambda Expression) 람다식은 자바에서 제공하는 함수형 프로그래밍(Functional Programming) 방식입니다. 자바의 객체지향 프로그래밍(Object Oriented Programming) 이지만, JDK 1.8 Java 8)부터 함수형 프로그래밍 기능을 추가하였습니다. 람다식은 익명 함수(Anonymous functions)를 지칭하는 용어로 함수(메서드)를 간단한 식(expression)으로 표현하는 방법입니다. 하지만 자바에서 람다식은 익명 함수가 아니라 익명 객체입니다. 자바에서는 함수만 존재할 수 없으므로 객체 형식으로 존재해야합니다. 본래는 익명 객체를 사용하는 것을 람다식을 사용하여 표현할 수 있습니다. 익명 객체란 이름이 없는 일회용 클래스로 선언과 생성을 동..

반응형