목록2025/06 (5)
celina의 이것저것

0. 리스트 vs 세트리스트: 순서유지, 중복허용, 인덱스 접근세트: 유일성, 순서미보장, 빠른검색 셋은 주로 요소의 유무가 중요한 경우에 사용한다. 셋을 직접 구현해보자import java.util.Arrays; public class MyHashSetV0 { private int[] elementData = new int[10]; private int size = 0; // O(n) public boolean add(int value) { if (contains(value)) { return false; } elementData[size] = value; size++; return true; ..

1. 리스트 추상화List 자료구조는 순서가 있고, 중복을 허용하는 자료 구조이다.ArrayList와 LinkedList는 내부 구현만 다를 뿐 같은 기능을 제공한다. 그래서 공통 기능을 인터페이스로 뽑아서 추상화하면 다형성을 이용할 수 있다. 2. 리스트 추상화 - 의존관계 주입예를 들어 많은 데이터를 처리하는 프로그램이 있다. 처음엔 ArrayList를 이용해서 개발을 했는데 막상 만들고 보니 LinkedList 자료구조를 쓰는게 더 효율적인 상황이다. public class BatchProcessor {private final MyArrayList list = new MyArrayList(); //코드 변경public void logic(int size) { for (int i = 0; i 원래..
기존의 ArrayList는 Object 타입으로 입력받기 때문에, 필요에 의해 다운캐스팅을 해야하고, 타입 안전성이 떨어지는 경우가 있다.-> 제네릭 타입을 이용하자 public class MyArrayListV4 { private static final int DEFAULT_CAPACITY = 5; private Object[] elementData; private int size = 0; public MyArrayListV4() { elementData = new Object[DEFAULT_CAPACITY]; } public MyArrayListV4(int initialCapacity) { elementData = new Object[initialCapacity]; ..
class MemberServiceTest { MemberService memberService = new MemberService(); MemoryMemberRepository memberRepository = new MemoryMemberRepository(); 이렇게 서비스 테스트 코드를 작성할 때 객체 두개를 생성해준다. 그런데 잘 생각해보면 테스트에서 만든 repository 객체랑 멤버 서비스에서 사용하는 repositiry 객체가 서로 다르다. 왜냐하면 지금 테스트 할때 repository 객체를 새로 만들었기 때문이다. 즉 다른 인스턴스다. public class MemoryMemberRepository implements MemberRepository{ private ..

문제1) 반복적인 코드 public class IntegerBox { private Integer value; public void set(Integer value) { this.value = value; } public Integer get() { return value; }}public class StringBox { private String value; public void set(String object) { this.value = value; } public String get() { return value; }} 이렇게 다양한 타입을 담는 박스가 있을때 사용을 하려면 밑의 코드처럼 각 타..