java 3

Stream 객체 값 변경 예제

아래와 같이 사용하고, map().collect()를 사용하지 않아도 된다. String, Integer는 아래와 같은 방식으로는 구현이 불가능하며, map().collect()를 사용하자 static class Person{ private String name; public Person(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } @Test void test(){ List personList = Arrays.asList(new Person("1"), new Person("2")); // 객체 값 변경 전 출력 p..

JAVA/Java Stream 2020.11.30

CompletableFuture

ParallelStream VS CompletableFuture 병렬 처리에 영향을 미치는 다음 3가지 요인을 잘 살펴보아야 한다. 1) 요소의 수와 요소당 처리 시간 컬렉션에 요소의 수가 적고 요소당 처리 시간이 짧으면 순차 처리가 오히려 병렬 처리보다 빠를 수 있음. 병렬 처리는 스레드풀 생성, 스레드 생성이라는 추가적인 비용이 발생하기 때문 2) 스트림 소스의 종류 ArrayList, 배열은 인덱스로 요소를 관리하기 때문에 포크 단계에서 요소를 쉽게 분리할 수 있어 병렬 처리 시간이 절약된다. 반면 HashSet, TreeSet은 요소 분리가 쉽지 않고, LinkedList 역시 링크를 따라가야 하므로 요소 분리가 쉽지 않음. 따라서 이 소스들은 ArrayList, 배열보다는 상대적으로 병렬 처리가..

JAVA/JAVA 2020.11.13

HashMap 반복문 조회

HashMap을 반복문을 통해 조회하는 방법을 확인한다. 대부분 keySet을 사용하여 조회하지만, Map에서 Key에 해당하는 값을 조회하는 비용이 추가로 발생하므로, 왠만하면 entrySet 사용을 추천한다. HashMap map = new HashMap(); map.put("a", 1); map.put("b", 2); map.put("c", 3); // keySet을 사용한 조회 (키에 해당하는 값을 Map에서 재조회하는 비용이 추가로 소모된다) for (String s : map.keySet()) { System.out.println(s + "/" + map.get(s)); } System.out.println("-----"); // entrySet을 사용한 조회 (Map 재조회에 대한 비용 소모..

JAVA/JAVA 2020.11.09