728x90

map 7

kotlin에서 리스트와 맵 예제

코틀린에서는 가변과 불편이라는 2가지 타입의 클래스를 제공한다. List는 불변 타입이므로 size(), get() 함수만 제공하고 데이터를 추가하거나 변경하는 add(), set() 함수는 제공하지 않는다. 그런데, MutableList는 가변타입이므로 size(), get() 함수 이외에 add(), set() 함수를 이용할 수 있다. MutableList는 mutableListOf() 함수로 만들 수 있다. fun main() { var mutableList = mutableListOf(10,20,30) mutableList.add(3,40) mutableList.add(0,50) println( """ list size : ${mutableList.size} list data : ${mutable..

람다식 중간연산 정리 (map, filter, reduce, collect)

stream 인터페이스를 사용하여 람다식을 기존 JAVA코드(명령형 스타일)와 비교 아래에 소개하는 4개의 메서드를 간단히 설명하면 map()은 엘리먼트 변경, filter()는 엘리먼트 선택, reduce(), collect()는 엘리먼트를 하나로 리턴 이다. 1. map() map 메서드는 입력 컬렉션을 출력 컬렉션으로 매핑하거나 변경할때 유용하다. 예제 코드 list의 엘리먼트 값을 모두 대문자로 변경하여 출력. final List names = Arrays.asList("Sehoon", "Songwoo", "Chan", "Youngsuk", "Dajung"); //java 7 System.out.println("java 7"); for(String name : names) { System.out...

JAVA 2022.10.19

map() 과 flatMap() 의 차이

.map() .map()은 단일 스트림의 원소를 매핑시킨 후 매핑시킨 값을 다시 스트림으로 반환하는 중간 연산을 담당한다. 필터가 조건을 충족시키는 새로운 스트림을 생선한다면, Map은 각각의 아이템을 변경하여 새로운 컨텐츠를 생성하는 기능이다. List list = Arrays.asList( new Person(20,"kim"), new Person(21,"moon"), new Person(22,"sub"), new Person(23,"park") ); list.stream().map(Person::getName) .forEach(System.out::println); kim moon sub park .flatMap() flatMap() 은 여러개의 스트림을 한개의 스트림으로 합쳐준다. 복잡한 스트림을..

JAVA 2022.09.22

HashMap 사용 방법 및 예제

HashMap은 Map의 일종으로 key와 value의 쌍으로 이루어진 데이터를 보관합니다. HashMap은 다음과 같은 특징이 있습니다. null key와 null value를 모두 허용합니다. 내부적으로 데이터에 접근할 때 동기화를 보장하지 않습니다. 데이터의 순서를 보장하지 않습니다. 중복된 key값을 허용하진 않지만, 중복된 값은 갖을 수 있습니다. HashMap은 다음과 같은 API들을 제공합니다. 예제를 통해 어떻게 사용하는지 알아보겠습니다. put() putAll() get() remove() clear() isEmpty() keySet() values() containsKey() containsValue() replace() put() put()은 인자로 key와 value를 받습니다. 전..

JAVA 2022.08.16

(JPA)프로젝션 feat.QueryDSL..

select 절에 조회 대상을 지정하는 것을 프로젝션이라 한다. 프로젝션이 하나면 아래 예제와 같이 해당 타입으로 반환한다. QItem item = QItem.item; //프로젝션 대상이 하나 List result = query.from(item).list(item.name); for (String name : result) { System.out.println("name = " + name); } 반면, 프로젝션 대상으로 여러 필드를 선택하면 QueryDSL은 기본으로 com.mysema.query.Tuple이라는 Map과 비슷한 내부 타입을 사용한다. 조회 결과는 tuple.get() 메소드에 조회한 쿼리 타입을 지정하면 된다. QItem item = QItem.item; List result = ..

QueryDSL 2022.06.18

컬렉션 엔티티 조회 + 페이징을 함께 해결 (feat. default_batch_fetch_size)

먼저 ToOne(OneToOne, ManyToOne) 관계를 모두 페치조인 한다. ToOne 관계는 row수를 증가시키지 않으므로 페이징 쿼리에 영향을 주지 않는다. 컬렉션은 지연 로딩으로 조회한다. 지연 로딩 성능 최적화를 위해 hibernate.default_batch_fetch_size , @BatchSize 를 적용한다. hibernate.default_batch_fetch_size: 글로벌 설정 - 이 옵션을 사용하면 컬렉션이나, 프록시 객체를 한꺼번에 설정한 size 만큼 IN 쿼리로 조회한다. @Repository public class OrderRepository { public List findAllWithMemberDelivery(int offset, int limit) { return..

JPA 2022.06.16

스트림의 기본 및 간단한 특징

(Java 8이상)스트림(Stream) 이란? 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것이다. 스트림이 제공하는 기능 - 중간 연산과 최종 연산 중간 연산 - 연산결과가 스트림인 연산. 반복적으로 적용 가능하다. 최종 연산 - 연산결과가 스트림이 아닌 연산. 스트림의 요소를 소모하므로 한번만 적용가능하다. 스트림의 구조 스트림의 특징 스트림은 데이터 소스로부터 데이터를 읽기만할 뿐 변경하지 않는다. 스트림은 Iterator처럼 일회용이다. 최종 연산 전까지 중간연산이 수행되지 않는다. - 지연된 연산 List list = Arrays.asList(4, 2, 5, 1, 3); List sortedList = list.stream().sorted() .collect(Collectors.toLis..

JAVA 2022.02.14
728x90