Iterate (계산, 컴퓨터 처리 절차를) 반복하다 Iterator 반복자 프로그래밍에서 반복기는 개발자가 컨테이너, 특히 리스트를 순회할 수 있게 해주는 객체이다. 다양한 유형이 반복기는 종종 컨테이너의 인터페이스를 통해 제공된다. 반복기는 데이터 베이스 커서와 동작이 유사하다. iterator는 ArrayList, HashSet과 같은 컬렉션을 반복하는데 사용할 수 있는 객체이다. 반복문을 사용하면 될 것을 ! 왜 Iterator를 사용하는 것일까? Iterator 사용 이유 리스트에는 인덱스가 있지만 Set, Map은 순서가 없는 컬렉션이기에 인덱스가 없다. iterator는 for-each 반복문이 할 수 없는 일을 할 수 있다. 컬렉션에서 요소를 제어하는 기능 iterator가 반복하는 동안 ..
Hashmap은 순서를 보장하지 않는다. Hashmap을 정렬하는 방법을 알아보자. 트리 맵 사용하기 Treemap은 SortedMap 인터페이스를 상속받는 클래스다. TreeMap에 Comparator를 생략하면 기본 Comparator가 동작한다. Comparator에서 문자열을 비교할때, compareTo()메소드가 실행됨. Map map = new HashMap(); map.put("John", 34); map.put("Jane", 26); map.put("Tom", 27); map.put("Bill", 29); Map sortedMap = new TreeMap(map); System.out.println(sortedMap); 직접 new Comparator()를 전다하여 정렬 로직을 구현할 수도..
익명 클래스 기법은 람다식과 자주 사용된다. Operate operate = new Operate() { public int operate(int a, int b) { return a + b; } }; // 람다식으로 줄이기 Operate operate = (a, b) -> { return a + b; }; // 더 짧게 줄이기 (리턴 코드만 있다면 생략이 가능) Operate operate = (a, b) -> a + b; operate.operate(3,5); // Error! 자바에서 람다식은 익명함수가 아니라 익명 객체이다. operate.operate(3,5); 를 호출하면 에러가 나는 이유는? 자바에서 메소드는 무조건 객체 안에 들어가 있어야한다! 람다식 표현의 익명 구현객체는 제약이 존재한다..
익명클래스 이름이 없는 객체 / 클래스 사용하는 이유? - 프로그램에서 일시적으로 한번만 사용되고 버려지는 객체일 경우 (단발성 이벤트 처리 : 스레드, UI이벤트 처리 등) - 재사용성이 없을때 매번 클래스를 생성해야하는 비용이 더 많이 들때 상단에 클래스를 정의하는 것보다, 지역변수처럼 익명 클래스로 정의하고 스택이 끝나면 삭제되도록 하는 것이 유지보수면이나 프로그램 메모리면에서 이점을 얻을 수 있다. 구현 방법 - 익명 자식 객체 Coffee라는 부모 클래스 생성 class Coffee { public void order(String coffee) { System.out.println("주문하신 " + coffee + " 나왔습니다."); } public void returnTray() { Syst..