Backend/JAVA&JAVA8
-
Java 기본 타입(primitive type), 참조 타입(reference type, wrapper class) 사이의 차이점Backend/JAVA&JAVA8 2022. 5. 21. 20:32
Java는 변수의 유형을 따집니다. 그래서 Java에서는 어떠한 값을 대입하거나, 대입한 값을 넘기거나 그 값을 재 가공하려면 해당 자료가 어디에서 쓰이는 무슨 자료형인지 알아야 합니다. 갑자기 무슨 소리냐고요? 얼마 전에 있었던 한 사건에 대해 슬쩍 이야기한 후 오늘 주제에 대해서 말씀드리려고 합니다. 저는 요새 서버 단을 Spring + Java로 짜고 있는데요. 얼마 전 동료분께서 정말 기본적인 질문을 주셨는데 제가 대답을 못했습니다. 그 질문은 바로...'원시형과 참조형의 차이가 뭐예요?' 입니다. (저의 포스팅에서는 원시형 == 기본형입니다만 혹시나 헷갈리실 분들을 위해서 앞으로는 원시형이라고 하겠습니다.) '분명 공부했는데...ㅠ.ㅠ'라는 생각도 잠시... 어쨌거나 기억이 제대로 안 나..
-
Clean Code를 위해 지켜야 하는 몇 가지 사항들Backend/JAVA&JAVA8 2022. 5. 21. 20:00
1. 변하는 부분에 대해서 깊게 생각해보기. 항상 변하는 부분이 문제인데, 변할 가능성이 높은 부분은 찾아서 추상화를 하면 문제가 해결된다. 좋은 설계 패턴을 익혀서 차후 코딩 패턴을 분석하는 데에 문제가 없도록 하자. 2. 주석에 대해서 생각해보기 주석을 달 때에 신중해야 한다, 주석 자체가 나쁜 설계임을 시인하는 걸 수도 있다. 3. 소프트웨어의 응집성이 높아야 한다. 4. 항상 같이 등장하는 코드들이 있으면 Data class를 만들어 사용하는 것이 효과적이다. 5. 매개변수가 긴 경우가 있는가? 함수 내부에서만 쓰이는 것들은 함수에서만 쓰이는 거니까, 꼭 필요한 부분만 매개변수로 넘기도록 하자. 6. 객체로부터 특정 값을 얻은 후에, 이 값들을 다른 메서드에 전달하고 있다면, 객..
-
[JAVA8] group byBackend/JAVA&JAVA8 2022. 5. 5. 14:07
오늘은 마치 sql문의 group by 문처럼 자신이 원하는 데이터들을 묶어주어서 Collections로 반환하는 groupBy 메소드에 대해서 알아보겠습니다. 어렵게 생각하실 필요가 없습니다. 백문이 불여일타라고 하죠? 코드로 직접 알아보겠습니다. 1. 재료가 될 class를 준비합니다. static class Item { private String name; private int qty; private BigDecimal price; Item(String name, int qty, BigDecimal price) { this.name = name; this.qty = qty; this.price = price; } public String getName() { return name; } public ..
-
[JAVA8] Map to List, List to Map-2 / Map을 리스트로, 리스트를 맵으로-2Backend/JAVA&JAVA8 2022. 5. 5. 14:05
이번 시간에는 저번 시간에 이어서 map을 list로 변환하는 코드들을 살펴보도록 하겠습니다. 번 포스팅은 이론적인 설명이 중심이 아닌 실무 중심의 포스팅이므로 바로 본론으로 들어가도록 하겠습니다. 우선 계속해서 가지고 놀 TestMap을 하나 만들어줍니다. 아래와 같이 만들어주시면 됩니다. private static Map getTestHashMap() { Map map = new HashMap(); map.put(1, "first_phone"); map.put(2, "second_phone"); map.put(3, "third_phone"); map.put(4, "fourth_phone"); return map; } Integer와 String으로 이루어진 Map을 하나 만들어주시고 value는 마음..
-
[JAVA8] Map to List, List to Map-1 / Map을 리스트로, 리스트를 맵으로-1Backend/JAVA&JAVA8 2022. 5. 5. 14:03
사진 설명을 입력하세요. 오늘은 어떠한 이론적인 내용보다는 평소에 실무에서 많이 사용하는 List를 Map으로, Map을 List로 변환하는 과정에 대해서 간단하게 알아보려고 합니다. 보통 서버 개발을 Spring으로 하시는 분들은 쿼리에 대한결과를 mybatis로 받아서 Java에서 이런저런 처리를 해서 Client요청에 대한 응답값을 Client에 내려주게됩니다. 그렇다면 Client에서 Server에서 내려준 결과를 받아서 화면에 뿌려주게 되구요. 대부분의 환경이, 그렇게 뿌려주는 곳이 웹 혹은 앱이라고 생각합니다. 백문이 불여 일타라고 하죠? 우선 강아지 클래스를 하나 만들어 보겠습니다. static class Puppy { private int id; private String name; Pup..
-
[JAVA8] What is different things between findAny and findFirst? / findAny와 findFirst의 차이점에 대하여Backend/JAVA&JAVA8 2022. 5. 5. 14:02
사진 삭제 사진 설명을 입력하세요. 안녕하세요. 이전 시간에는 map과 filter에 대해 알아보았고 또한 그 차이점에 대해서 알아보았는데요. 이번 시간에는 filter를 사용할 때에 사용하는 findFirst와, findAny 메소드들의 차이점에 대해서 알아볼게요. 1. findAny() 우선, findAny 메소드를 사용하면 Stream에서 어떠한 요소를 찾을 수 있습니다. 순서에 구애받지 않고 요소를 찾을 때 사용하세요. 예를 들어 아래와 같이 Integer로 이루어진 List가 있다고 가정하겠습니다. List testResultList = Arrays.asList(1,2,3,2,1); Optional resultOfFindAny = testResultList.stream().findAny(); 위..
-
[JAVA8] What is different things between Map and Filter in Java8?-2 / Map과 Filter 그리고 차이점에 대하여-2Backend/JAVA&JAVA8 2022. 5. 5. 14:00
저번 시간에 자료구조에서 유용하게 사용할 수 있는 filter메소드를 살펴보았는데요. map은 어떨까요? map은 기존 데이터에서 수정하여 적용시킵니다. 원하는 수정사항을 반영하여 기존의 Map을 통째로 반환시키는 것이죠. 백문이 불여일타라고 하죠? 코드로 확인해보겠습니다. 이번에는 아래와 같이 알파벳 리스트를 만들어줍니다. List alphabetList = Arrays.asList("a","b","c","d"); 그런데 갑자기, alphabetList 속에 있는 alphabet들을 전부 대문자로 바꾸고 싶은 생각이 들었습니다. 이전에 배운 filter로는 조건을 만족하는 값을 반환하는 코드밖에는 짤 수가 없습니다. 저는 지금 자료구조에 해당하는 값을 통째로 수정하고 통째로 반환하고 싶습니다....! ..
-
[JAVA8] What is different things between Map and Filter in Java8?-1 / Map과 Filter 그리고 차이점에 대하여-1Backend/JAVA&JAVA8 2022. 5. 5. 13:58
안녕하세요. 오늘은 Map과 Filter 그리고 그 차이점에 대해서 알아보는 시간을 가지려 합니다. 실제로 Client 측에 Data들을 조립하여 내려줄때에 혹은 Database로 부터 Data들을 가져와서 어딘가에 담을때, 만약 List로만 담았다면 그 List를 변경할 생각을 하실텐데요. ArrayList, HashMap과 같은 여러 데이터들을 담고있는 자료들로 부터, 특정한 조건을 주어서 원하는 무언가를 반환 하고 싶을 때에 .map() 메소드와 .filter() 메소드를 사용합니다. 저번 시간에 Optional을 살펴보며 스리슬쩍(?) 보았었죠. 바로 코드로 넘어가는게 좋을 듯 합니다. 백문이 불여일타라고 하죠? 아래와 같이 Person Class가 있다고 가정하겠습니다. static class ..