내 맘대로 알고리즘

Java ArrayList, Vector 예제


0.

알고리즘을 하면서 한 번의 실력이 점핑하는 기회가 있었습니다.

제가 대부분의 코드를 Java로 작성하면서,

각종 자료구조의 특징은 알고 있지만, 그것을 구현하지는 못한다

생각을 했고, 각종 자료구조 라이브러리를 공부하면 좋겠다고 생각했습니다.


그래서 짧은 기간 동안, Collection의 자료구조를 공부하기로 결정했고,

이것을 공부하고 난 후에 각종 알고리즘 문제를 풀 수 있는 원동력이 되었다고

생각해서 정리를 하게 되었습니다.



1. ArrayList




필요에 따라 크기가 동적으로 증가하는 배열이고,

각 아이템의 순서를 기억하고 있다는게 가장 큰 특징입니다.

추후에 배울 자료구조에서는 순서를 기억하기 보다는 속도를 우선시하거나,

나열을 우선시하는 자료구조가 있기 때문에 arrayList는 가장 기초적이고,

가장 쉽게 생각할 수 있는 자료구조 입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.util.ArrayList;
import java.util.Collections;
 
public class ExamArrayList {
    public static void main(String[] args) {
        ExamArrayList examArrayList = new ExamArrayList();
        ArrayList<Integer> arrayList = new ArrayList<Integer>();
        arrayList.add(0);
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);
        examArrayList.print(arrayList);//arrayList의 내용을 확인함
        Collections.reverse(arrayList);//내림차순
        examArrayList.print(arrayList);//arrayList의 내용을 확인함
        Collections.sort(arrayList);//올림차순
        examArrayList.print(arrayList);//arrayList의 내용을 확인함
        arrayList.remove(3);//3번째 인덱스를 제거
        examArrayList.print(arrayList);//arrayList의 내용을 확인함
    }
    
    public void print(ArrayList<Integer> arrayList) {
        System.out.print("value: ");
        arrayList.forEach((value)->{
            System.out.print(value);
        });
        System.out.print(String.format("  size: %d", arrayList.size()));
        System.out.println("");
    }
}
 
cs


1-1. 결과값



1-2. 매소드 설명:


Collections.reverse(자료구조); 는 자료구조의 순서를 reverse하는 것입니다.

Collections.sort(자료구조);는  자료구조의 순서를 sort하는 것입니다.

arrayList.remove(데이터);는 arrayList에 data를 제거하는 것입니다.

arryaList.add(데이터);는 arrayList에 data를 추가하는 것입니다.


2. Vector


필요에 따라 크기가 동적으로 증가하는 배열이고,

각 아이템의 순서를 기억하고 있다는게 가장 큰 특징입니다.

또한 필요에 따라서 쉽게 크기를 조절할 수 있는 것이 특징이며,

arrayList와 다른점 또한 setSize를 통해서 배열의 크기를 조절할 수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import java.util.Collections;
import java.util.Comparator;
import java.util.Vector;
 
public class ExampleVector {
    //MovieClass
    public static class Movie{
        int popular;
        String name;
        public Movie(int popular, String name) {
            this.popular = popular; 
            this.name = name;
        }
        
        public int getPopular() {
            return popular;
        }
        
        public String getName() {
            return name;
        }
    }
    
    public static void main(String[] args) {
        ExampleVector exampleVector = new ExampleVector();//exampleVector 생성
        Vector<Movie> movieVector = new Vector<Movie>();//Movie의 자료형을 갖고 있는 Vector 생성
        movieVector.add(new Movie(10"새우버거의 모험"));//데이터 추가
        movieVector.add(new Movie(8"감자튀김의 일상"));//데이터 추가
        movieVector.add(new Movie(9,"가디언즈 오브 갤럭시"));//데이터 추가
        Collections.sort(movieVector,new Comparator<Movie>() {//인기도 순으로 올림차순
            @Override
            public int compare(Movie o1, Movie o2) {
                // TODO Auto-generated method stub
                return o1.popular - o2.popular;
            }
        });
        exampleVector.print(movieVector);//print
        Collections.reverse(movieVector);//데이터를 역순으로 나열
        exampleVector.print(movieVector);//print
        Collections.sort(movieVector, new Comparator<Movie>() {//이름 순으로 올림차순
            @Override
            public int compare(Movie o1, Movie o2) {
                // TODO Auto-generated method stub
                return o1.name.compareTo(o2.name);
            }
        });
        exampleVector.print(movieVector);//print
        Collections.reverse(movieVector);//데이터를 역순으로 나열
        exampleVector.print(movieVector);//print
        movieVector.setSize(1);//size를 1로 함
        exampleVector.print(movieVector);//print
        movieVector.add(new Movie(10"어벤져스4"));//데이터 추가
        exampleVector.print(movieVector);//print
        movieVector.setSize(0);//size를 0으로 함
        exampleVector.print(movieVector);//print
        
    }
    
    public void print(Vector<Movie> vector) {
        System.out.print("item: ");
        vector.forEach((movie)->{
            System.out.print(String.format("%s,%d\t", movie.getName() , movie.getPopular()));
        });
        System.out.println("");
    }
}
 
cs


2-1. 결과값




2-2. 매소드 설명:


Collections.reverse(자료구조); 는 자료구조의 순서를 reverse하는 것입니다.

Collections.sort(자료구조);는  자료구조의 순서를 sort하는 것입니다.

vector.remove(index);는 vector의 특정 인덱스를 제거하는 것입니다.

vector.add(데이터);는 vector에 data를 추가하는 것입니다.

vector.setSize(length);는 vector의 size를 특정 size로 조절하는 것 입니다.