목록분류 전체보기 (231)
코딩 기록들
특정 속성이 데이터 집합에 포함되어있는지 여부를 검색하는 데이터처리 ex) allMatch, anyMatch, noneMatch, findFirst, findAny anyMatch - 적어도 한 요소와 일치하는지 확인 -> boolean반환 // 메뉴 스트림에 채식요리가 있는지 확인 if (menu.stream().anyMatch(Dish::isVegerarian)) { System.out.println("The menu is (somewhat) vegetarian friendly!!"); } allMatch - 모든요소가 일치하는지 확인 // 모든 요리가 1000칼로리 이하인지 확인하기 boolean isHealthy = menu.stream() .allMatch(d -> d.getCalories() ..
Mapping의 역할 : 형태를 바꿔줌 맵핑이란? - 필터링이 SQL의 WHERE과 같다면, 맵핑은 SELECT컬럼과 같음 (단, 하나의 요소만 맵핑할수있음. 맵 내부에서 또다른 스트림을 만들면 안됨) - 원본스트림의 내용을 변환하고자 할 때 사용 - 스트림의 원하는 요소만 추출해 새로운 스트림으로 생성함 (필터 : 걸러내는것, 매핑 : 원하는 요소를 뽑아내서 새로운 스트림을 만들겠다) ex) 단어 4개가 들어있는 리스트를 이용해, 각 글자들의 길이를 갖는 숫자리스트를 만듦 List words = Arrays.asList("Java8", "Lambdas", "In", "Action"); List wordLengths = words.stream() //Stream() = Stream의 제네릭인 String..

필터링 - filter() List vegitarianMenu = menu.stream() // 채식 요리인지 확인하는 메서드 레퍼런스 .filter(Dish::isVegerarian) .collect(Collectors.toList()); 필터링 예제 List menu = DishData.menu; menu.stream() //Stream //이 filter를 제일 많이 씀 //Stream = {french fries, rice, season fruit}; .filter((Dish dish) -> dish.isVegetarian()) //boolean의 결과가 true라면 스트림으로 만들어줌 //반복하며 출력 //forEach : Consumer : filter가 만들어준 새로운 Stream를 반복하겠..

스트림이란? - 컬렉션, 배열의 저장요소를 하나씩 참조해서 람다식(함수적 스타일) 으로 처리할 수 있도록 해주는 반복자 - 병렬처리를 지원하는 내부반복자 - 컬렉션, 배열을 스트림으로 변환하여 여러가지 형태의 처리를 할 수 있음 *병렬처리 : 쓰레드가 동시에 움직이는것 - ex) 온라인게임 - 반복문을 이용하던 기존의 컬렉션을 스트림으로 처리할 수 있음 -> 반복문을 사용하지 않고 컬렉션을 제어할 수 있음 -- 내부반복자 : for을쓰지않아도, 가지고있는 데이터의 수 만큼 반복한다 스트림의 종류 - BaseStream을 부모로 하는 Stream, IntStream, LongStream, DoubleStream (자식 인터페이스들)이 상속관계를 이룸 - Stream : 객체 요소를 처리하는 스트림, - I..

함수로 보내는건 : 람다식 / 메소드로 보내는건 : 메소드 레퍼런스 - 메소드 레퍼런스를 이용하면, 기존의 메소드를 파라미터로 전달 할 수 있음 - 메소드의 파라미터에 함수형 인터페이스가 정의되어 있을 때, 메소드 레퍼런스를 인자로 전달할 수 있음 Employees::isManagerIs100); Employees에 있는 isManager 메소드 : 이코드는 이후 JVM에서 람다형식으로 바뀌어서 전달됨 (Employee) -> employee.manager() == 100 으로 바뀌어서 전달될것 람다와 메소드레퍼런스 단축표현 예제 - 메소드 전후로만 :: 으로 구분함 - 실행시키지 않아도 자동으로 전달됨 메소드레퍼런스 만드는 3가지 방법 1. 정적(static) 메소드 레퍼런스 - Integer.pars..

객체 지향 프로그래밍 object(Instance) oriented programming 객체 Instance -> 1. 변수 할당, 2. 객체생성, 3. 객체 파라미터 전달, 4. 객체 내에서 다른 객체를 생성-> 이걸 다 할 수 있어야 '객체'라고 함 함수형 프로그래밍 functional programming -> 객체(Instance)를 각각 함수로 만들 수 있어야 함 -> 람다(Lamda)를 지원함 - 자바는, instance, functional 둘다 지원함! ( 람다바디 ; ex) (emp1, emp2) -> emp2.getEmployeeId()-emp1.getEmployeeId(); - 람다파라미터 : 메소드의 파라미터 ( 파라미터의 타입은 생략가능(JVM이 알아서 판단해줌) ) - 화살표(..
java 1.8 이후 Calendar 대체하기위해 날짜,시간,날짜시간을 처리할 수 있는 클래스가 3개 추가됨 DateTimeFormatter.ofPattern("yyyy년 MM월 dd일") : 현재시간을 문자타입으로 바꿔줌 LocalDate - 날짜조회 - LocalDate.now : 현재시간 LocalTime - 시분초만 관리가능 -> 쓸 일 별로 없음(업무시작 ~ 업무끝 시간 관리 정도) LocalDateTime (LocalDate + LocalTime) - 년 원 일 시 분 초 다 다룰수 있음 - 자바 1.8부터 : 날짜와 날짜사이의 차이를 구할 수 있다 Period.between(startDate, endDate); - 현재말고 과거나 미래의 시간을 가져오고 싶을 떄 : LocalDate.of(2..
Java 1.8 이전까지는 I/O가 매우 어렵고 복잡했으나, Java 1.8 부터(NIO) 비교적 간편해졌으며, 코드를 분석하기도 쉬워짐 IO / NIO 차이점 IO NIO 입출력 방식 스트림 방식 채널 방식 버퍼 방식 non-buffer buffer (버퍼) 비동기 방식 지원x 지원 블로킹/넌블로킹 방식 블로킹 방식만 지원 블로킹/넌블로킹 모두 지원 스트림 vs 채널 - 스트림 기반(IO) : 데이터를 읽기 위해서 입력스트림 생성 & 출력위해서는 출력스트림 생성 - 채널기반(NIO) : 양방향 입력과 출력이 가능. (입출력을 위한 별도의 채널 만들필요 x) 버퍼 vs 넌버퍼 - 버퍼 사용 (IO) : 보조스트림인 BufferedInput(output)Stream을 연결해서 복수개의 바이트를 한번에 입력..