[Java]ArrayList

2025. 2. 11. 15:51·Java

기초를 배울때 대부분 Arrays 배열을 배운다. Arrays 는 고정된 개수의 단일 타입 값(정적 할당) 들을 담고 있는 객체이다.

Arrays는 정적 할당이기 때문에 메모리 낭비 또는 공간이 부족한 문제가 생기곤 한다.

이 문제를 해결하기 위해 ArrayLists 를 사용할수 있어 한번 알아 볼려고한다.


 

우선, 위에 설명한 Arrays 와ArrayLists 에 대한 장단점 부터 알아볼려고 한다.

 

✅ Arrays   vs   ArrayLists

 

Arrays

장점

  • 데이터 크기가 정해져 있기 때문에 메모리 관리가 편하다.
  • 메모리에 연속적으로 나열되어 할당되기 때문에 index를 통해 색인(접근)속도가 빠르다.

단점

  • 처음 선언한 배열의 크기를 변경할 수 없다.
  • index에 위치한 하나의 데이터를 삭제하더라도 해당 index에는 빈공간으로 계속 남는다.
  • 배열의 크기를 변경할 수 없기 때문에, 처음에 어떻게 지정하냐에따라 메모리 낭비나 공간이 부족할 수 있다

 

ArrayLists

장점

  • index 의 값이 빠지고 값이 당겨진다.
  • 리스트의 길이가 가변적이기 때문에 변경이 수월하다.

단점

  • 배열과 달리 메모리에 연속적으로 나열되어 있지 않고, 주소로 연결되어있는 형태이기 때문에 index를 통한 색인(접근)속도가 배열보다는 느리다.
  • 객체로 데이터를 다루기 때문에 적은 양의 데이터를 다루는 경우엔 배열에 비해 차지하는 메모리가 커진다.

 

 

◆  장점,단점으로 설명을 하긴 했지만 상황에 맞게 적용시키는 것이 가장 중요하다.

 

 

 

 

✅ ArrayList란?

  • ArrayList는 배열을 기반으로 한 컬렉션의 하나이며, 데이터를 추가, 삭제시 내부에서 동적으로 배열의 길이를 조절해준다.

출처:구글 이미지

 

  • 객체 자체를 저장하는 것이 아니라 객체의 번지를 저장한다.
  • 동일한 객체를 중복 저장할 수 있는데, 이 경우에는 동일한 번지가 저장되며 null 또한 저장이 가능하다.

ArrayList 컬렉션 생성

import java.util.ArrayList;

// 타입설정 Integer 객체만 적재가능
ArrayList<Integer> members = new ArrayList<>();

// 초기 용량(capacity) 지정
ArrayList<Integer> num1 = new ArrayList<>(10);

// 배열을 넣어 생성
ArrayList<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3));

// 다른 컬렉션으로부터 그대로 요소를 받아와 생성
// ArrayList를 인자로 받는 API를 사용하기 위해서 Collection 타입 변환이 필요할 때 많이 사용
ArrayList<Integer> list2 = new ArratList<>(list1);

 

 

● <> 를 통해 타입을 지정하는데 이 기호는 제네릭(Generics) 라는 기법이다.

 

 

✅ ArrayList의 주요 메소드

 

 

https://computerreport.tistory.com/33

 

[Java]Lv3. 단어 맞추기 게임

문제 1.컴퓨터가 랜덤으로 영어단어를 선택합니다. 2.영어단어의 자리수를 알려줍니다. ex ) PICTURE = 7자리 ⇒ _ _ _ _ _ _ _ 3.사용자는 A 부터 Z 까지의 알파벳 중에서 하나를 입력합니다

computerreport.tistory.com

 

위 링크의 문제를 예제로 사용해 풀어보았다.

 

1.boolean add(E e)

mainword 단어를 toCharArray()로 문장을 char형태로 분리한 뒤 ArrayList 에 단어를 추가 시킨다.그럼 single 배열에는 ['a','b','c','d','e'] 이런식으로 들어가게  될 것 이다.

String mainword = "abcde";
ArrayList<Character> single = new ArrayList<>();
        for (char c : mainword.toCharArray()) {
            single.add(c);
        }

 

 

 

2. E get(int index), int size()

입력한 char형태의 alphabet 과 singie의 i 번째 인덱스(single.get(i))가 같은지 검사하는 코드이다.

또한,single.size() 를 이용해 배열의 크기를 불러올 수 있다.

 //입력한 글자가 포함될 시
		   boolean checking=false;
		   for(int i=0;i<single.size();i++)
		   {
			   if(single.get(i) == alphabet.charAt(0))
			   {
				   wordnum[i]=alphabet.charAt(0);
				   checking=true;
			   }
			   
		   }

 

 

3. boolean contains(E e)

check의 arraylists 에 입력한 alphabet 과 동일한 값이 있는지 검사하는 코드이다.

 

//이미 입력한 알파벳 확인
		   if(check.contains(alphabet))
		   {
			   System.out.println("이미 입력된 글자 입니다 기회가 1 차감됩니다.");
			   chance -=1;
			   continue;
		   }

 

 

 

4. E remove(int index)

인덱스 0의 값이 10 이 삭제되어 20,30,40,50 만 출력된다.

ArrayList<Integer> numbers = new ArrayList<>();
    numbers.add(10);
    numbers.add(20);
    numbers.add(30);
    numbers.add(40);
    numbers.add(50);
    
    numbers.remove(0);
    
    System.out.println(numbers);

 

 

 

 

5. int indexOf(E e)

30이라는 값이 어느 index에 들어 있는지 확인하는 코드이다.

ArrayList<Integer> numbers = new ArrayList<>();
    numbers.add(10);
    numbers.add(20);
    numbers.add(30);
    numbers.add(40);
    numbers.add(50);

 
    System.out.println(numbers.indexOf(30));

 

 

'Java' 카테고리의 다른 글

[Java]Enum이란? & 사용법  (0) 2025.02.28
[Java]코드 스타일 및 명명 규칙  (0) 2025.02.24
[Java]난수 생성(math,Random)  (0) 2025.02.14
[Java]Map 컬렉션  (0) 2025.02.07
[Java]객체 생성(new)  (0) 2025.02.06
'Java' 카테고리의 다른 글
  • [Java]코드 스타일 및 명명 규칙
  • [Java]난수 생성(math,Random)
  • [Java]Map 컬렉션
  • [Java]객체 생성(new)
코딩로봇
코딩로봇
금융 IT 개발자
  • 코딩로봇
    쟈니의 일지
    코딩로봇
  • 전체
    오늘
    어제
    • 분류 전체보기 (133) N
      • JavaScript (8)
      • SQL (10)
      • 코딩테스트 (29)
        • Java (15)
        • SQL (12)
      • Java (10)
      • 프로젝트 (21) N
        • 트러블슈팅 (7) N
        • 프로젝트 회고 (12)
      • git,Github (2)
      • TIL (35) N
      • Spring (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스파르타 코딩 #부트캠프 #첫ot
    java #arraylist #list #배열
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩로봇
[Java]ArrayList
상단으로

티스토리툴바