[자바7,JAVA7,자바팁]ArrayList사용 JAVA TIP(자바팁),자바 JCF
JCF(Java Collection Framework)의 ArrayList는 자바개발시 자주 사용되는 것 자료구조인데 성능에 연관된
개발이라면 다음을 주의하자.
1. 요소를 추가/삽입 할때는 뒤쪽에 삽입하자.
- add(E)
- add(int, E)
- addAll(List<E>)
- addAll(int, List<E>)
- add(int, E)
- addAll(List<E>)
- addAll(int, List<E>)
Argument가 하나 있는것은 뒤쪽에 추가하는데 이것을 이용하자. 중간에 끼워 넣는것은 성능에 안좋다.
몇번째에 넣으라는 Argument 두개짜리 메소드는 넣을 공간확보를 위해 그이후의 것을 우측으로 복사(System.arraycopy이용)하고 빈공간을 확보 후 ADD하므로 성능에는 비추천.
2. 요소 삭제
- remove(int) : 해당 인덱스의 요소를 삭제하고 우측에 있는 것들을 System.arrayCopy를 이용하여 복사하므로
성능에 좋지 않다.
- remove(Object) : remove(int)와 비슷하다.
- removeAll(Collection), retainAll(Collection) : removeAll은 ArrayList를
반복적으로 뒤져서 해당되는 전체를 삭제, retainAll은 ArrayList를 반복적으로 뒤져 공통되는 것을 남기고 삭제. 내부적으로
contains 메소드를 반복적으로 호출, 성능 별로다.
3. subList(int, int) : 이 메소드는 자바6, 자바7에서 내부적으로 다르게 동작하는데, 자바6에서는 AbstractList로 정의하여 recursion call을 사용하는 반면 자바7에서는 ArrayList.subList 메소드를 호출하여 sublist를 만든다. 그러므로 자바6, 자바7의 큰차이는 내부적으로 recursion call을 하는냐의 차이인데, 자바7에서는 recursion call에 대해 고민할 필요는 없으므로 자바7에서는 subList(int, int).clear등을 사용하여 삭제한다면 성능에 무리가 없을 듯 하다.
[개강확정강좌]오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)
[주간]
[11/4]Spring3.X, MyBatis, Hibernate실무과정
[11/6]SQL초보에서실전전문가까지
[평일야간]
[11/1]C#,ASP.NET마스터
[11/5]iPhone 하이브리드 앱 개발 실무과정
[11/7]JAVA&WEB프레임워크실무과정
[11/8]Spring3.X, MyBatis, Hibernate실무과정
[주말]
[11/9]C#,ASP.NET마스터
[11/9]JAVA&WEB프레임워크실무과정
[11/9]안드로이드개발자과정
[11/9]웹퍼블리싱 마스터
[11/9]Spring3.X, MyBatis, Hibernate실무과정
댓글 없음:
댓글 쓰기