Stream의 forEach는 요소를 돌면서 실행되는 stream 연산의 최종 작업이다. 보통 System.out.println 메소드를 넘겨서 결과를 출력할 때 사용한다. 종료 조건이 있는 로직을 구현할 때 주의해야 한다. Stream 자체를 강제적으로 종료시키는 방법은 없다. 무언가 강제적인 종료 조건에 대한 로직이 있는 for-loop를 stream.forEach()로 구현한다면, 기존 for-loop에 비해 비효율이 발생한다. 스트림 병렬화에 대한 공식 문서의 Side-effects 항목을 참고하면, forEach 내부에 로직이 하나라도 더 추가된다면 동시성 보장이 어려워지고 가독성이 떨어질 위험이 있다. 또한 Stream의 의도를 벗어나게 된다. 본래 forEach는 스트림의 종료를 위한 연산이..
Local variable userId defined in an enclosing scope must be final or effectively final long userId = -1; if(...){ userId = updateUser(); }else{ userId = insertUser(); } userList.removeIf(t->t.getUserID()==userId); 위처럼 람다식을 사용하려다가 에러가 났다. removeIf 안의 userId변수가 final 이거나 effectively final이여야 한다고 한다. 이유를 찾아보았다. 람다식에서는 다른 스레드에서 호출될때 변수가 스택영역에서 사라질것을 대비하여 자유변수의 복사본을 만들어 접근을 허용하도록 하게 한다. 이를 람다 캡쳐링(cap..
Java 8에서 추가된 java.util.stream 패키지를 이용하여 컬렉션의 요소를 람다식으로 처리할 수 있다. 컬렉션을 sort 하기위해 comparable 인터페이스를 구현하는 클래스를 정의할 필요가 없다! 설령 구현한다고 해도 아래와 같이 간략하게 구현할수 있다.. 람다식을 안쓴다면 public class ValueComparator implements Comparator { ... @Override public int compare(String s1, String s2) { return map.get(s1).compareTo(map.get(s2)); } } 혹은 Comparator compare = new Comparator() { @Override public int compare(Integ..
객체, 데이터들을 효율적으로 관리 할 수 있는 자료구조들이 있는 라이브러리를 컬렉션(Collection) 프레임워크라고 한다 https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html java Collection API 문서를 보면 Collection의 상속 관계를 알 수 있다. List, Set, Queue은 Collection 인터페이스을 상속받지만, Map 인터페이스는 구조상(key,value)의 차이가 있어 별도로 정의한다. 요약 구조를 한 눈에 정리하자면 아래와 같다. 인터페이스 순서 중복가능 구현클래스 Collection List O O ArrayList, Stack, Vector, LinkedList Queue O O DelayQ..
NEW QUESTION 81 Which two reasons should you use interfaces instead of abstract classes? (Choose two.) A. You expect that classes that implement your interfaces have many common methods or fields, or require access modifiers other than public. B. You expect that unrelated classes would implement your interfaces. C. You want to share code among several closely related classes. D. You want to decl..
NEW QUESTION 61 Given: 1 2 3 4 5 6 7 8 class Block{ String color; int size; Block(int size, String color){ this.size = size; this.color = color; } } Colored by Color Scripter cs and the code fragment: 1 2 3 4 5 List blocks = new ArrayList (); blocks.add(new Block(10, "Green")); blocks.add(new Block(7, "Red")); blocks.add(new Block(12, "Blue")); Collections.sort(blocks, new ColorSorter()); cs Whi..
NEW QUESTION 41 In 2015, daylight saving time in New York, USA, begins on March 8th at 2:00 AM. As a result, 2:00 AM becomes 3:00 AM. Given the code fragment: 1 2 3 4 5 ZoneId zone = ZoneId.of("America/New_York"); ZonedDateTime dt = ZonedDateTime.of(LocalDate.of(2015, 3, 8), LocalTime.of(1, 0), zone); ZonedDateTime dt2 = dt.plusHours(2); System.out.print(DateTimeFormatter.ofPattern("H:mm - ").fo..
NEW QUESTION 21 Given: 1 2 3 4 IntStream stream = IntStream.of (1,2,3); IntFunction inFu= x -> y -> x*y; //line n1 IntStream newStream = stream.map(inFu.apply(10)); //line n2 newStream.forEach(System.out::print); cs Which modification enables the code fragment to compile? A. Replace line n1 with: IntFunction inFu = x -> y -> x*y; B. Replace line n1 with: IntFunction inFu = x -> y -> x*y; C. Repl..
- Total
- Today
- Yesterday
- boj
- 캐시삭제
- 선언적트랜잭션 #noRollbackFor #@Transactional
- script버전
- 프론트엔드
- C++
- 프론트엔드개발자
- 백준
- 퇴사
- 백준퇴사
- html꿀팁
- 백준14501
- 런타임에러
- C# java 차이점
- c#
- html
- 개발중캐시삭제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |