일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JDBC
- JavaScript
- CRUD
- MVC
- git revase
- SQL
- WHEREIN
- springboot
- passwordencoder
- Variabla
- content-box
- react
- mybatis
- 부적합한열
- git reset
- Spring
- useContext
- BCryptPasswordEncoder
- git amend
- ResultType
- git
- localStorage
- Java
- 배열
- Thymeleaf
- 이딴게개발자
- PathVariable
- HTML
- assertequals
- oracle
- Today
- Total
개발새발
[Java] 배열과 리스트 2 : ArrayList 본문
순식간에 돌아온 배열과 리스트 2탄!
정확한 정체는 고사하고 선언하는 것도 제대로 모르는 나를 위해 빨리 돌아왔다 호호
공부하면서 쓰는 블로그~ 레즈고
1. ArrayList
Java에서 제공하는 (유)동적 배열로 크기를 동적으로 조정할 수 있는 자료구조
기존에 배운 배열은 항상 사이즈를 정해서 선언을 하거나, 값을 넣어서 초기화와 동시에 선언이 가능했다.
하지만 만약에 배열 사이즈 변경을 해야되는 상황이 온다면? 배열 요소가 몇 되지 않으면 큰 문제는 아니겠지만, 사실 열댓개만 넘어가도 코드를 수정하기 귀찮을 것이고, 몇 백 개의 요소가 존재한다면 이걸 어떻게 해! 소리가 절로 나올 것이다.
그래서 배열요소를 일일이 수정하는 것이 어렵다는 특징이 있다.
이때 자바에서 제공하는 아주 기가막힌 객체 배열 클래스가 있는데~ 그것이 바로 ArrayList인 것이다!
배열과 다른 점으로는...
객체 배열을 좀 더 쉽게 사용할 수 있도록 하는 것인데, 이 클래스는 객체 배열을 관리할 수 있는 멤버 변수와 메서드를 제공하므로 사용법 자체도 어렵지 않다.
ArrayList의 특징은 다음과 같다
- 배열과 마찬가지로 요소들을 순서대로 저장하여 인덱스를 사용하고, 이를 통해 요소에 접근할 수 있음
- 배열과는 달리 크기를 미리 지정할 필요가 없으며, 요소를 추가하거나 제거할 때 자동으로 크기가 조정 됨
1) ArrayList 클래스 사용하기
ArrayList를 사용하는 기본 형식은 다음과 같다.
ArrayList<객체의 자료형> 배열이름 = new ArrayList<객체의 자료형>();
그리고 ArrayList는 java.util 패키지에 구현되어 있는 클래스이므로, 그냥은 사용할 수 없고 코드 맨 윗 부분에 ArrayList를 사용할 것이라고 선언하는 import가 필요하다. (import java.util.ArrayList;)
package arrayList;
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
//ArrayList 선언
ArrayList<String> pokemon = new ArrayList<String>();
//add() 메서드로 요소 값 추가
pokemon.add("가디");
pokemon.add("윈디");
pokemon.add("델빌");
pokemon.add("헬가");
pokemon.add("블레이범");
System.out.println(pokemon);
}
}
2) ArrayList 클래스형으로 선언하기
배열처럼.. 그냥 기본자료형으로 선언할 수도 있지만.. 생성한 다른 클래스형을 자료형으로 또 사용이 가능한 특징이 있는데.. 졸리군요 투비컨티뉴..
230927 무려 일주일만에 완성하러 돌아온 사람입니다 푸하하
사실요 이제와서 말하기 좀 그런데 ArrayList는 그.. 자바에서 제공하는 어떤 클래스인 것도 그렇고 뒤에 나올 인터페이스인 List와 비교해서 또 설명을 하고싶걸랑요..? 근데 제가 아직 거기까진 공부를 제대로 못해서 일단은 진짜 그냥 '사용법'만 정리해놓을게요. 일주일만에 돌아와서 한다는 소리가 참 구차하죠? 호호 하지만 어떡해요 진짜 공부를 못한걸 ㅠㅠ 암튼 이제 진짜루 이어서 써보겠습니다
일단 그.. Pokemon 클래스 하나를 만들어볼게요
public class Pokemon{
//멤버변수
String pokemonName; //포켓몬 이름
int pokedexNum; //포켓몬 도감번호
//생성자
public Pokemon(String pokemonName, int pokedexNum) {
this.pokemonName = pokemonName;
this.pokedexNum = pokedexNum;
}
//메서드
public void PokemonInfo() {
System.out.println(pokemonName + "(" + pokedexNum + ")");
}
}
그리고 이 Pokemon 클래스를 자료형으로 받는 ArrayList를 한번 구현해보겠습니다
package pokemonArrayList;
import java.util.ArrayList;
public class PokemonArrayList {
public static void main(String[] args) {
//Pokemon 클래스를 자료형으로 받는 firePokemon ArrayList 선언 (불타입 포켓몬들만 넣을래)
ArrayList <Pokemon> firePokemon = new ArrayList<Pokemon>();
firePokemon.add(new Pokemon("가디",58));
firePokemon.add(new Pokemon("윈디",59));
firePokemon.add(new Pokemon("브케인",155));
firePokemon.add(new Pokemon("마그케인",156));
firePokemon.add(new Pokemon("블레이범",157));
for(int i=0 ; i<firePokemon.size() ; i++) {
//Pokemon 클래스의 인스턴스 pokemon
Pokemon pokemon = firePokemon.get(i);
pokemon.PokemonInfo();
}
System.out.println(); //줄 띄움
System.out.println("===향상된 for문 사용===");
for(Pokemon pokemon : firePokemon) {
pokemon.PokemonInfo();
}
}
}
아주 잘 나옵니다. 암튼 위 코드를 통해 분석한 결과~
1. 배열과 다르게 배열 전체 길이를 미리 지정할 필요가 없다.
→ add() 메서드를 사용해 생성자만 호출하고 요소를 추가하면 된다
2. ArrayList의 요소를 하나 가져오는 메서드 get()
3. 배열의 크기는 '배열이름.length'를 통해 가져왔지만, ArrayList는 size() 메서드를 사용
→ size() : 배열에 유효한 값이 저장된 요소 개수 반환
firePokemon.add(new Pokemon("윈디",59));
저는 이 코드에 익숙해지는데 가장 힘들었던 것 같네요. 사실 아직도 어색할지도...
아무튼 사용법 자체는 이렇게 끝입니다.. 인터페이스까지 배워서 List랑 다시 찾아올게요~~~
안녕~!
'Java > 개념을 Java' 카테고리의 다른 글
[Java] Getter & Setter란 무엇인가? (0) | 2023.09.24 |
---|---|
[Java] JUnit (0) | 2023.09.22 |
[Java] 배열과 리스트 1 : Array ~ 다차원 배열 (1) | 2023.09.18 |
[Java] API (1) | 2023.09.14 |
[Java] 추상클래스 Abstract (0) | 2023.09.12 |