본문으로 바로가기

Java- 컬렉션 프레임워크(ArrayList)

category 프로그래밍 언어/Java 2019. 7. 15. 14:24

1. ArrayList

빈도수가 가장 높은 Collection Class입니다.

 

List 인터페이스를 구현합니다. 따라서 앞서 설명한 List의 특징들을 모두 담고있습니다.

 

List의 특징은 이전 포스팅 참고

2019/07/15 - [프로그래밍 언어/Java] - Java - 컬렉션 프레임워크

 

Java - 컬렉션 프레임워크

1. 컬렉션 프레임워크 컬렉션은 여러개의 데이터(그룹)을 말하는데 이에 대한 프로그래밍 방식을 표준화한 것을 말합니다. 2. 핵심 인터페이스 List, Set, Map이 존재합니다. 이를 List와 Set을 Collection 인터..

dlwjdcks5343.tistory.com

인덱스는 0부터 시작하게 됩니다. 순서대로 0..1..2..3.. 저장이 됩니다.

 

배열에 저장공간이 부족한 경우 큰 새로운 배열 생성 후 복사하여 저장됩니다.

 

2. ArrayList 정렬

기본적으로 Collections에서 sort를 지원합니다. 따라서 

ArrayList list = new ArrayList(10);
list.add(new Integer(5));
list.add(new Integer(4));
list.add(new Integer(3));
list.add(new Integer(2));
list.add(new Integer(0));
list.add(new Integer(1));
list.add(new Integer(3));

Collections.sort(list);
0,1,2,3,4,5

오름차순으로 정렬이 됩니다. 만약에 ArrayList에 있는 특정 List의 값을 기준으로 정렬을 적용하고자 한다면

 

 static class CompareRegDateDesc implements Comparator<Board> {

        @Override
        public int compare(Board o1, Board o2) {
            // TODO Auto-generated method stub
            return o2.getRegDate().compareTo(o1.getRegDate());
        }
    }

즉 Board라는 객체의 날짜를 기준으로 정렬하는 메서드를 통해 다음과 같이 적용시킵니다.

Collections.sort(mBoardList1,new CompareRegDateDesc());

3. ArrayList 수정(set)

간단하게 ArrayList 내용을 업데이트하고 싶으면 set메서드를 호출하면 됩니다.

 

  list.set(2, "AA");

2번째 요소를 AA로 바꾼다는 뜻입니다.

 

그렇다면 ArrayList의 내부 객체의 내용을 수정하고 싶다면..?? 좀 복잡해집니다. 이때는 스캔을 해서 해당 객체를 찾고 

 

그 인덱스를 부여하여 수정을 해줍니다.

 

//리스트에서 해당 수정된 객체를 찾아서 그 리스트에서 수정
Board temp = new Board();

temp.setId(id1);

int index=0;

for(int idx=0; idx<mBoardList1.size(); idx++){
	if(compareToId(temp,mBoardList1.get(idx))){
	index=idx;
	Log.i("dd","index: "+index);
	mBoardList1.set(index,data2);
	}
}
 //ID 비교 전용 메소드
private boolean compareToId(Board o1, Board o2) {
//대소문자 구분 하는 상태
	return o1.getId().equals(o2.getId());

//대소문자 구분 하지 않는 상태
//return o1.getId().toLowerCase().equals(o2.getId().toLowerCase());
}

즉 임시 객체 temp를 통해 게시글 Id를 넣어주고 ArrayList의 크기만큼 for문을 돌려서

 

compareToId(ID비교 전용하는 메서드)를 통해 ArrayList안에 들어있는 수정할 객체의 인덱스를 찾아서

 

해당 인덱스를 객체로 수정을 합니다.

 


4. Vector

public class VectorEx1 {
    public static void main(String[] args) {
        Vector vector = new Vector(5);
        vector.add("1");
        vector.add("2");
        vector.add("3");
        print(vector);

        System.out.println();

        vector.trimToSize();
        System.out.println("after trimToSize()");
        print(vector);

        System.out.println();

        vector.ensureCapacity(6);
        System.out.println("after ensureCapacity()");
        print(vector);

        System.out.println();

        vector.setSize(7);
        System.out.println("after setSize()");
        print(vector);

        System.out.println();

        vector.clear();
        System.out.println("after clear()");
        print(vector);

    }

    public static void print(Vector vector) {
        System.out.println(vector);
        System.out.println("size : " + vector.size());
        System.out.println("capacity : " + vector.capacity());
    }
}
[1, 2, 3]
size : 3
capacity : 5

after trimToSize()
[1, 2, 3]
size : 3
capacity : 3

after ensureCapacity()
[1, 2, 3]
size : 3
capacity : 6

after setSize()
[1, 2, 3, null, null, null, null]
size : 7
capacity : 12

after clear()
[]
size : 0
capacity : 12

 

'프로그래밍 언어 > Java' 카테고리의 다른 글

Java- 컬렉션 프레임워크(Stack,Queue)  (0) 2019.07.17
Java- 컬렉션 프레임워크(LinkedList)  (0) 2019.07.16
Java - 컬렉션 프레임워크  (0) 2019.07.15
Java- 예외  (0) 2019.07.12
Java- 인터페이스  (0) 2019.07.11