[Java] 제네릭 (Generic) 완전 정복 T와 와일드 카드
·
Java
컬렉션 쓸 때 항상 보이는 List, Map. 그냥 외워서 쓰다 보면 어느 순간 , , 같은 게 나왔을 때 알아도 멈칫하는 순간이 오더라. 그래서 이번 기회에 그냥 글로 적어보고 싶어서 주제삼아 작성했다. 제네릭은 클래스나 메서드를 만들 때 다룰 데이터 타입을 미리 정해두지 않고, 실제로 쓰는 시점에 타입을 끼워 넣을 수 있게 해주는 기능이다. List 에서 T 가 바로 그 자리다. 사용할 때 String이 들어가면 String을 다루는 리스트가 되고, Integer가 들어가면 Integer를 다루는 리스트가 된다. 같은 코드인데 타입만 바꿔서 여러 군데 쓸 수 있는 셈이다.제네릭을 왜 쓰는걸까제네릭 없이 코드를 짜면 두 가지 문제가 생긴다.첫째, 캐스팅(타입 변환, 예를 들어 Object 로 저장해둔..
[Java] HashMap 은 뭐고 어떻게 동작 하는 걸까?
·
Java
HashMap은 Java를 쓰다 보면 자연스럽게 자주 마주치는 자료구조다. 회사 프로젝트 진행 중에 WebSocket 프록시 서버를 구현할 일이 있었는데, 브라우저 클라이언트 세션과 외부 CCTV 스트리밍 서버 쪽 세션을 1:1로 매핑해서 보관해야 하는 상황이었다.처음에는 HashMap을 쓰려고 했는데, WebSocket 특성상 여러 클라이언트가 동시에 연결되고 끊기는 일이 발생하다 보니 멀티스레드 환경에서 HashMap을 그냥 쓰면 안 된다는 걸 알게 됐다. 결국 ConcurrentHashMap을 썼는데, 정작 HashMap 자체를 제대로 정리한 적이 없다는 생각이 들어서 이번 기회에 HashMap부터 차근차근 정리해보려 한다.HashMap을 쓰는 이유단순하다. 조회가 빠르다.리스트에서 원하는 값을 찾..
Java - Collection Framework란?
·
Java
이전에 포스팅했던2025.04.24 - [프로그래밍언어/Java] - 자바 프로그래밍(1) - for each문 자바 프로그래밍(1) - for each문알고리즘 공부를 하다가 for each문이 나와서 글을 작성해본다.학부에서 Java를 공부할 때 for each문을 접해본 적이 없었는데NHN 아카데미 자바 백엔드 과정을 수료하면서 처음 배웠던 기억이 있다...fkqlaus.tistory.com에서 Iterable에 관해 이야기할 때 Collection에 대한 내용이 나왔었다(아주 쪼끔..)면접을 보러 갔을 때도 Collection에 관한 질문을 받은 적이 있는 만큼 잘 이해한다면 실무와 면접에서 도움이 될 거라고 생각한다. Collection Framework가 뭔가요? Java의 Collection..
Java - 면접 질문으로 다시 보는 Java의 List와 구현체(ArrayList 등)와 관계
·
Java
얼마 전에 면접을 보러 갔다가 이런 질문을 받았다. 면접관 : ArrayList는 List interface를 구현한 클래스인데 3가지 정도가 같이 넘어오는데 그게 뭔지 아나요? 라는 말을 듣고 아주 그냥 멘붕이 왔었다.그래서 이 글에는 그 내용을 정리해보려고 한다. 이 질문에는 두가지의 의미를 가지고 있다고 생각했다.첫 번째로는 객체지향프로그래밍(OOP)과 설계 관념에서의 추상적 개념두 번째로는 실제 기능 관점 아마 첫번째가 맞을 것 같지만 두 가지 모두 끄적여보려고 한다. 객체지향프로그래밍(OOP)와 설계 관념에서의 추상적 개념 1. 다형성 (Polymorphism)List list = new ArrayList(); 이렇게 선언하면 List 타입의 참조 변수로 ArrayList 객체를 다룰 수 있..
Java - for each문 직접 구현해보기
·
Java
for each문 설명글에서 이어지는 내용이다2025.04.24 - [프로그래밍언어/Java] - 자바 프로그래밍(1) - for each문 자바 프로그래밍(1) - for each문알고리즘 공부를 하다가 for each문이 나와서 글을 작성해본다.학부에서 Java를 공부할 때 for each문을 접해본 적이 없었는데NHN 아카데미 자바 백엔드 과정을 수료하면서 처음 배웠던 기억이 있다...fkqlaus.tistory.com for each문 직접 구현해 보기Iterable은 직접 구현할 수 있는데 Iterable 인터페이스를 보면 iterator라는 함수를 정의해줘야 한다. 그렇다.Iterator에서 hasNext()와 next()를 구현하면 Iterable을 사용할 수 있다!그렇다면 hasNext..