passion and relax

[JAVA] 06. 자바 라이브러리 (전부 다 직접 만들어서 쓸 필요는 없습니다) 본문

프로그래밍

[JAVA] 06. 자바 라이브러리 (전부 다 직접 만들어서 쓸 필요는 없습니다)

Grab Java 2024. 5. 20. 15:26

ArrayList

. add(Object elem) : 객체 매개변수(elem)를 목록에 추가
. remove(int index) : index 매개변수로 지정한 위치에 있는 객체를 제거
. remove(Object elem) : 주어진 객체가 ArrayList에 있으면 그 객체를 제거
. contains(Object elem) : 객체 매개변수 elem에 매치되는 것이 있으면 true
. isEmpty() : 목록에 아무 원소도 없으면 true
. indexOf(Object elem) : 객체 매개변수(elem)의 인덱스 또는 -1을 리턴. if (index >= 0) {} 과 함께 자주 사용됨.
. size() : 현재 목록에 들어있는 원소의 개수 리턴
. get(int index) : 주어진 index 매배변수 위치에 있는 객체를 리턴

 


배열과 ArrayList의 비교

. 선언
String[] myArray = new String[3];    //선언 시, 미리 크기 지정이 필요함!!
ArrayList<String> myArrayList  = new ArrayList();
ArrayList<String> myArrayList = new ArrayList<String>();


. 추가 
myArray[2] = b;   //인덱스를 지정해야 한다.
myArrayList.add(b);


. 삭제
myArray[2] = null;  //null 처리 해줘야 한다.
myArrayList.remove(b)  //크기가 동적으로 바뀐다.


. contains() 메소드
//배열
boolean isIn = false;
for (String item : myList) {
 if (b.equals(item)) {
  isIn = true;
  break;
 }
}
//ArrayList
boolean isIn = myList.contains(b);


. size() 메소드
int theSize = myList.length;  //length는 배열에서 제공하는 단 하나뿐인 인스턴스 변수! 메소드 아님!
int theSize = myList.size();  //size()는 ArrayList에서 제공하는 많은 메소드 중 하나!

 


자바 라이브러리 = 자바 API

. 자바 라이브러리에 있는 클래스는 모두 패키지 안에 들어있다. 왜?
    방대한 클래스 더미를 분류할 수 있다.
    namescope가 지정되어, 같은 이름의 클래스 생성에 의한 충돌을 피할 수 있다. 
    어느 정도의 보안 제공 (나중에..)

. 원래는 이 패키지명 까지 다 적어야 한다. (단! java.lang 패키지 제외)
    java.util.ArrayList<Dog> foo = new java.util.ArrayList<Dog>();. 싫으면, import를 미리 해줘라
    import java.util.ArrayList;   ArrayList<Dog> foo = new ArrayList();

. import 하면 import한 클래스 때문에 전체 클래스가 커지고, 추가되어 컴파일 되는 것인가?
  => 아니다. 단지 namespace를 정해주는 역할만 할 뿐이다. C의 include와는 다르다.

. "x" 가 붙어 있는 패키지들
  => 확장 패키지(extension package) : 표준과 비표준의 2가지로 나뉨. 비표준은 무시해도 됨.
  => 여기서 확장 표준 패키지가 기본 패키지로 승격 되면서, sun에서는 x를 떼라고 요청.
  => 개발자들이 x를 떼 내는 것에 대해 너무 힘들어 하여, 그냥 그 명칭이 유지되고 있는 패키지들.
  => javax.swing 이 그 예..