관리 메뉴

프로그래밍 삽질 중

컬렉션 프레임워크 (1) ArrayList 설명 및 문제 본문

과거 프로그래밍 자료들/자바(Java)

컬렉션 프레임워크 (1) ArrayList 설명 및 문제

평부 2021. 3. 9. 09:54

※ 컬렉션 프레임 워크 특징

- 배열 사용 시 고정된 크기 → 불편함 증가 → 해결책 : 연결 리스트(LinkedList)

- 컬렉션 : 데이터를 한 곳에 모아 편리하게 저장, 관리하는 가변적인 크기의 컨테이너

- 컬레션 프레임워크 : 객체를 한 곳에 모아 효율적으로 관리하고 편리하게 사용할 수 있도록 제공하는 환경

 

 

※ 컬렉션 프레임 워크 사용 시 주의점

- 컬렉션 요소는 객체만 가능(int, char, double 등 기본타입은 자동 박싱/언박싱 시능으로 사용)

- 컬렉션은 제너릭(Generics)기법으로 사용

→ 특정 타입만 다루는 것이 아닌 여러 타입으로 변화 가능

→ <E>, <K>, <V> : 타입 매개 변수

ex) E에 특정타입으로 구체화 : 정수만 다루는 리스트 : List<Integer>

 

※ ArrayList<E>의 특성

- E 대싱 요소로 특정 타입으로 구체화 가능

- 객체, null, 기본타입(Wrapper 객체로 만들어 삽입) 등 삽입 가능

- 리스트의 맨 뒤에 객체 추가 : 공간이 모자라면 자동적으로 늘림

- 리스트 중간에 객체 삽입 : 삽입된 뒤의 객체는 뒤로 하나씩 이동

- 임의의 위치에 있는 객체 삭제 가능 : 객체 삭제 후 자동 자리 이동

- ArrayList 문법

: ArrayList<String> al = new ArrayList<String>();

 

 

[예시1]

키보드로 문자열을 입력받아 ArrayList에 삽입하고 가장 긴 이름 출력하기

 

[출력값]

이름을 입력하세요 >>
스타벅스
이름을 입력하세요 >>
이디야
이름을 입력하세요 >>
할리스
이름을 입력하세요 >>
커피빈
이름을 입력하세요 >>
공차
이름을 입력하세요 >>
드롭탑
스타벅스
이디야
할리스
커피빈
공차
드롭탑
입력한 문자 중 가장 긴 문자는 스타벅스

 

 

 

 

[예시1 답]

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
import java.util.ArrayList;
import java.util.Scanner;
 
public class ArrayListEx {
 
    public static void main(String[] args) {
        ArrayList <String> al = new ArrayList<String>();
        Scanner scan = new Scanner(System.in);
        
        int longestal = 0;
        
        for(int i=0; i<6; i++) {
            System.out.println("이름을 입력하세요 >> ");
            al.add(scan.next());
        }
        for(int i=0; i<al.size(); i++) {
            System.out.println(al.get(i) + " ");
        }
        for(int i=0; i<al.size(); i++) {
            if(al.get(i).length() > al.get(longestal).length()) {
                longestal = i;
            }
            
        }
        System.out.println("입력한 문자 중 가장 긴 문자는 " + al.get(longestal));
    }
}
 
cs

 

 

[예시 2]

Point 클래스 객체를 만들어 저장하는 ArrayList 작성하기

 

 

[출력예시]

Point(2, 3)

Point(3, 4)

Point(1, -6)

 

 

 

[예시2 답]

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
import java.util.ArrayList;
import java.util.Scanner;
 
public class ArrayListEx {
 
    public static void main(String[] args) {
        ArrayList <String> al = new ArrayList<String>();
        Scanner scan = new Scanner(System.in);
        
        int longestal = 0;
        
        for(int i=0; i<6; i++) {
            System.out.println("이름을 입력하세요 >> ");
            al.add(scan.next());
        }
        for(int i=0; i<al.size(); i++) {
            System.out.println(al.get(i) + " ");
        }
        for(int i=0; i<al.size(); i++) {
            if(al.get(i).length() > al.get(longestal).length()) {
                longestal = i;
            }
            
        }
        System.out.println("입력한 문자 중 가장 긴 문자는 " + al.get(longestal));
    }
}
 
cs