본문 바로가기

728x90

JAVA/JAVA

(10)
Optional 개념과 활용 1. 정의 public final class Optional { private final T value; } T타입 객체의 래퍼 클래스. T타입의 참조변수를 갖고 있다. T value의 의미는 모든 종류의 객체 저장 가능하다. 참고로 래퍼 클래스는 기본 타입에 해당되는 데이터를 객체로 포장해주는 클래스이다. ex) Integer, Long. Optional을 왜 사용하냐면 null을 직접 다루는 것은 위험하기에(NullPointerException 문제) 객체에 담아서 간접적으로 null을 다룰 수 있다. 기존에 null 체크를 하면 코드가 지저분했기에 Optional을 자주 사용하는 편이다. 2. 활용 예시 1) Optional 객체 생성하기 String str= "hello"; Optional opt..
스트림(Stream) - 최종 연산(3/3) 1. 최종 연산 Terminal Operation. 연산결과가 스트림이 아닌 연산, 단 한 번만 적용가능하다. 스트림의 요소를 소모한다. forEach(): 지정된 작업 수행. forEachOrdered(): 순서 유지. 병렬 스트림으로 처리할 때 작업 순서를 유지할 때 사용. forEach와 마찬가지로 지정된 작업을 수행한다. count(): 요소의 개수 반환. max(), min(): 최대값/최소값 반환. findAny(): 아무거나 하나 스트림의 요소를 반환. findFirst(): 첫번째 요소를 반환. allMatch(): 주어진 조건을 모두 만족하는지. anyMatch(): 주어진 조건들을 하나라도 만족하는지. noneMatch(): 모두 만족하는지 않는지. toArray(): 스트림의 모든 요..
스트림(Stream) - 중간 연산(2/3) 여기서부터 진짜 중요한 내용입니다. 실무에서 자주 사용되는 문법이니 꼭 인지하시는 걸 추천드립니다. 1. 스트림의 연산 중간 연산과 최종 연산이 있습니다. 중간 연산: 연산결과가 스트림인 연산. 반복적으로 적용 가능합니다. 최종 연산: 연산결과가 스트림이 아닌 연산. 단 한번만 적용가능합니다. Stream.distinct().limit(5).sorted().forEach(System.out::println) 주황색은 중간 연산을 표시하고 3개를 표현했습니다. (N개 가능) 빨간색은 최종 연산이며 1개만 올 수 있습니다. 2. 중간 연산 distinct(): 중복을 제거한다. filter(Predicate predciate): 조건에 안 맞는 요소를 제거 limit(long maxsize): 일부를 잘라낸..
스트림(Stream) - 개념(1/3) 1. 개념 스트림은 데이터의 연속적인 흐름. 다양한 데이터(컬렉션 배열 등)를 표준화된 방법으로 다룰 수 있다. List list = Arrays.asList(5,12,13,57); 위의 코드는 Integer 요소가 있는 list를 표현한 것이다. 형태가 list로 고정됐다. Stream intStream = list.stream(); // 컬렉션 Stream strStream = stream.of(new String[]{"apple","cd","melon"}); //배열 Stream intStream = stream.iterate(0,n->n+3); //0,3,6,9 Stream intStream = stream.generate(Math::random); //람다식 반면 스트림은 어떤 형태든 변화할 수..
Generics 지네릭스 - 와일드 카드 및 메소드 (2/2) 1. 와일드 카드 정의 하나의 참조 변수로 대입된 타입이 다른 객체에 참조가 가능하다. 와일드 카드의 종류는 세 가지이다. : 제한이 없다. 모든 타입이 가능하다. TV가 Item의 자손임을 가정했을 때 ArrayList list = new ArrayList(); //에러 발생 지네릭을 선언하고, 위의 코드를 작성하면 타입이 불일치라 에러가 발생했다. 그러나 와일드 카드는 이 한계를 넘어설 수 있다. ArrayList
Generics 지네릭스 - 개념 및 활용 (1/2) 1. 개념 컴파일 시 타입을 체크해주는 기능이다. 아래와 같이 News 객체만 저장할 수 있는 ArrayList를 제네릭스를 활용해 구현해 봤다. ArrayList newslist = new ArrayList(); newslist.add(new News("h")) // 가능 newslist.add(new SportsNews("h")) // 컴파일 에러 이런 식으로 제네릭스를 통해 오직 News 객체만 담을 수 있다. 그러면 이걸 왜 사용할까? 아래의 예시를 살펴보자. ArrayList newslist = new ArrayList(); newslist.add(new News("h")); News n = (News)newslist.get(0); News n = newslist.get(0)으로 하면 컴파일 에..
int, long 타입과 같은 Primitive type null 값이 안 들어가는 이유 1. 이유 int, long 타입 변수는 기본형(Primitive type) 변수입니다. 기본형 변수는 null 값이 없습니다. 실제 값을 저장 장소를 가져서, 값이 없으면 0을 반환합니다. 기본형 변수는 값이 없으면 아래의 값처럼 나오지만, null은 나오지 않습니다. Data Type Default Value (for fields) Java의 기본 요소에 대한 기본값 byte 0 short 0 int 0 long 0L float 0.0f double 0.0d char '\u0000' boolean false 2. 대처 방안 기본 데이터 유형은 null 일 수 없습니다. Object 데이터 유형 만 null 일 수 있습니다. 그래서 정수(int)가 null이 될 수 있도록 할려면 Integer, lon..
JAVA - 리스트와 ArrayList 차이점, 메소드 설명. 1. List 리스트는 배열의 한계 때문에 만들어진 자료형. 프로그래밍 중 크기를 알 수 없는 경우가 더 많다. List는 메모리가 허용하는 한 '계속해서 추가'할 수 있도록 만든 자료형 인터페이스이다. (1) 추가 List listA = new ArrayList(); listA.add("김삿갓"); listA.add("홍아리"); listA.add(new String("홍길동")); listA.add(1,"1번째 요소값"); => 인덱스 1에 1번째 요소값이 들어가고 !데이터들이 하나씩 밀리게 된다.! (2) 조회 하나씩 값을 조회하고 싶으면 get(index); 데이터를 전부 출력하고 싶다면 Iterator와 for문 사용. String element0 = listA.get(0).toString();..

728x90