본문 바로가기
✨ Java/컬렉션 프레임워크(CollectionFramework)

자바(JAVA) - 컬렉션프레임워크 ArrayList

by 환풍 2023. 2. 15.
728x90

컬렉션 프레임워크의 종류

- 데이터를 읽고 쓰는 방식에 따라 크게 4가지를 제공한다.
- Set, List, Queue, Map 인터페이스

 List 인터페이스를 구현하여 제공하는 ArrayList를 소개하려고한다.

 List 인터페이스를 구현하여 제공하는 클래스 2종 => ArrayList와 LinkedList

 

List : 데이터의 순번이 존재하고, 중복이 가능하다.

이에 비해, 나중에 소개할  인터페이스 Set : 데이터의 순번이 없고, 중복이 불가하다.

 

ArrayList 

  • 데이터가 여러개 저장될 수 있는 통을 생성.
  • 같은 자료형의 데이터만 들어갈 수 있다.

문자열 객체를 생성하는 방법

 

1
List<String> list = new ArrayList<>();
cs
 

ArrayList<String> list = new ArrayList<String>(); 이와 같이 작성해도 무방하나, 통상적으로 위에걸로 사용한다.

 

데이터를 저장, 삭제, 읽기하는 방식

1
2
3
4
5
6
7
8
9
10
11
//데이터 저장
list.add("java");
list.add("C++");
list.add("python");
list.add("python"); // List는 데이터가 중복으로도 들어간다.
 
//데이터 삭제
list.remove(0);
 
// 데이터 읽기
list.get(0);
cs

원하는대로 한번 출력해보자.

1
2
3
4
5
6
7
8
9
// List에 저장된 데이터의 개수.
System.out.println(list.size());
 
//list에 저장된 모든 데이터 출력
System.out.println(list);
for(int i =0; i<list.size(); i++)
{
   System.out.println(list.get(i));
}
cs

 

실행결과


정수형 객체를 생성하는 방법

1
2
3
4
5
6
7
8
        // 정수를 여러개 저장할 수 있는 list
        // list의 저장될 데이터의 자료형으로 기본 자료 형은 불가.
        // 래퍼클래스를 사용.-> Integer
        List<Integer> list = new ArrayList<>();
 
        list.add(10);
        list.add(5);
        list.add(100);
cs

배운걸 가지고 연습해보고자 한다.

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
68
69
70
71
72
73
74
75
76
77
78
79
80
package list;
 
import java.util.ArrayList;
import java.util.List;
 
public class List03 {
    public static void main(String[] args) {
        // Man 객체가 다수 저장될 수 있는 리스트 생성.
        List<Man> list = new ArrayList<>();
 
        Man m1 = new Man("박주홍"20);
        Man m2 = new Man("김"29);
        Man m3 = new Man("이주인"23);
 
        list.add(m1);
        list.add(m2);
        list.add(m3);
 
        // List에 저장된 모든 Man 객체를 출력.
        for(int i=0; i<list.size(); i++)
        {
            System.out.println(list.get(i)); // toString이 출력된다.
            // .toString()이 생략된것과 똑같음.
        }
        System.out.println();
 
        for( Man e : list )
        {
            System.out.println(e);  // Man 객체에 생성된 toString이 실행된다.
        }
        System.out.println();
 
        // list에 저장된 사람들 중에 이름이 "김" 인
        // 사람을 찾아서 그 사람의 나이를 출력
        for(int i=0; i<list.size(); i++)
        {
            if(list.get(i).getName().equals("김"))
            {
                System.out.println(list.get(i).getAge());
            }
        }
 
 
    }
}
 
class Man{
    private String name;
    private int age;
 
    public Man(String name, int age) {
        this.name = name;
        this.age = age;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    @Override
    public String toString() {
        return "Man{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
 
cs

Man 클래스를 만들고, main 메소드가 있는 클래스에서 실행시켜보았다.

list.get(i).getAge() 와 같이 하나의 리스트 안에 있는 세세한 정보 하나를 출력하기 쉽기 때문에 정말 많이 쓰인다.

반응형

댓글