본문 바로가기

컬렉션

[EffectiveJava] 10장 예외 69. 예외는 진짜 예외 상황에만 사용하라 // 69-1 예외를 완전히 잘못 사용한 예 - 따라하지 말 것! try { int i = 0; while(true) { // 절대 좋지 않은 코드 range[i++].climb(); } } catch (ArrayIndexOutOfBoundsException e){ } // 표준적인 관용구로 하면 이해하기 쉽고 try는 필요하지 않다, for (Mountain m : range) { m.climb(); } for ( Iterator i = collection.iterator(); i.hashNext(); ) { Foo foo = i.next(); ... } // 컬렉션을 이런 식으로 순회하지 말 것! try { Iterator i = collection.iter..
[EffectiveJava] 9장 일반적인 프로그래밍 원칙 57. 지역변수의 범위를 최소화하라 // 57-1 컬렉션이나 배역을 순회하는 권장 관용구 for (Element e : c) { ... // e로 무언가를 한다 } // 57-2 반복자가 필요할 때의 관용구 for (Iterator i = c.iterator(); i.hasNext(); ) { Element e = i.next(); ... // e와 i로 무언가를 한다 } Iterator i = c.iterator(); while(i.hasNext()){ doSomething(i.next()); } ... Iterator i2 = c2.iterator(); while(i.hasNext()){//버그! doSomething(i2.next()); } for(Iterator i = c.iterator(); i..
[EffectiveJava] 7장 람다와 스트림 42. 익명 클래스보다는 람다를 사용하라 // 42-1 익명 클래스의 인스턴스를 함수 객체로 사용 - 낡은 기법이다! (254쪽) Collections.sort(words, new Comparator() { public int compare(String s1, String s2) { return Integer.compare(s1.length(), s2.length()); } }); public static void main(String[] args) { Item42 item = new Item42(); item.exam01(); } // 42-2 람다식을 함수 객체로 사용 - 익명 클래스 대체 (255쪽) Collections.sort(words, (s1,s2)-> Integer.compare(s1.le..
[EffectiveJava] 5장 제네릭 26. 로 타입은 사용하지 말라 // 26-1 컬렉션의 로 타입 - 따라 하지 말 것! // Stamp 인스턴스만 취급한다. private final Collection stamp=...; // 실수로 동전을 넣는다. stamps.add(new Coin(...)); // "unchecked call" 경고를 내뱉는다. // 26-2 반복자의 로 타입 - 따라 하지 말 것! for (Iterator i = stamps.iterator(); i.hasNext();) { Stamp stamp = (Stamp) i.next(); //ClassCastException을 던진다. stamp.cancel(); } // 26-3 매개변수화된 컬렉션 타입 - 타입 안전성 확보! private final Collectio..