티스토리 뷰
java.util에는 여러 클래스가 존재한다.
이번 게시물에서는 java.util에 존재하는 여러 클래스들 중 ArrayList에 대해 다뤄보도록 하겠다.
[ ArrayList ]
자바의 배열을 다룰 때, 자바의 배열은 방의 크기를 조정할 수 없어 효율성이 떨어진다고 배웠었다.
따라서, 가변배열 객체인 ArrayList에 대해 공부해보려 한다.
ArrayList는 List 인터페이스를 구현한 클래스이다.
따라서 다음과 같은 형식으로 작성할 수 있다.
ArrayList 작성 예시
List<String> names = new ArrayList<>();
주요 메소드
.gett(index) //해당 인덱스의 값 가져오기
.add(item) //원소 추가
.set(index, item) //특정 인덱스의 값 수정
.remove(index) //특정 인덱스 삭제
.clear() //모든 방 삭제
remove() 메소드는 삭제한 아이템을 반환한다.
예제1
MainClass01.java
package test.main;
import java.util.ArrayList;//class
import java.util.List; //interface
public class MainClass01 {
public static void main(String[] args) {
//String type을 저장할 수 있는 가변배열객체 생성해서 참조값을 names 라는 지역 변수에 담기
List<String> names = new ArrayList<>();
names.add("김구라");
names.add("해골");
names.add("원숭이");
//배열의 방의 크기
int size = names.size();
//0번방에 저장된 내용 참조해서 지역변수에 담아보기
String name1 = names.get(0);
String name2 = names.get(1);
String names3 = names.get(2);
//특정 방의 값 수정(덮어쓰기)
String prevName = names.set(0, "이정호");
//특정 인덱스 삭제(방 자체를 제거하기)
String n = names.remove(1);//1번 방 삭제
//모든 방을 다 삭제
names.clear();
}
}
"참조값, 인덱스를 활용하여 리스트의 방 삭제하기"
예제 2
1. 정수를 저장할 수 있는 List type의 참조값을 얻어 nums라는 지역변수에 담아보자.
List<Integer> nums = new ArrayList<>();
< > 안에는 클래스 타입만 들어갈 수 있기 때문에, Integer을 넣어주어야 한다.
2. nums에 10, 20, 30, 10을 추가해보자.
nums.add(10);//auto wrapping 되므로 new Integer(10)할 필요없이 10 넣어주면됨
nums.add(20);
nums.add(30);
nums.add(10);
3-1. index를 활용하여 첫번째 방을 삭제해보자.
nums.remove(1);
3-2. 참조값을 활용하여 20이 들어있는 방을 삭제해보자.
//Integer value = 20;
//nums.remove(value);
nums.remove(new Integer(20));
4. 문자열을 저장할 수 있는 List type의 참조값을 얻어, names 라는 지역변수에 담아보자.
List<String> names = new ArrayList<>();
5. 김구라, 해골, 원숭이 를 원소로 넣어보자.
names.add("김구라");
names.add("해골");
names.add("원숭이");
6-1. index를 활용하여 첫번째 방을 삭제해보자.
names.remove(1);
6-2. 참조값(키값)을 활용하여 해골이 들어있는 방을 삭제해보자.
names.remove("해골");
전체 코드
MainClass02.java
package test.main;
import java.util.ArrayList;
import java.util.List;
public class MainClass02 {
public static void main(String[] args) {
//정수를 저장할 수 있는 List type의 참조값 얻어내기
List<Integer> nums = new ArrayList<>();//기본 데이터 타입은 클래스가 아니라서 int 말고 Integer써야함
nums.add(10);//auto wrapping 되므로 new Integer(10)할 필요없이 10 넣어주면됨
nums.add(20);
nums.add(30);
nums.add(10);
//방법1 - 인덱스를 활용한 삭제
//nums.remove(1);
//방법2 - 참조값을 활용한 삭제 1
//Integer value = 20;
//nums.remove(value);
//방법3 - 참조값을 활용한 삭제 2
nums.remove(new Integer(20));
List<String> names = new ArrayList<>();
names.add("김구라");
names.add("해골");
names.add("원숭이");
//방법1 - 인덱스를 활용한 삭제
//names.remove(1);
//방법2 - 참조값(키값)을 활용한 삭제
names.remove("해골");
}
}
예제3
Member.java
package test.mypac;
public class Member {
public int num;
public String name;
public String addr;
}
다음의 문제를 풀어보자.
1. Member type을 저장할 수 있는 ArrayList 객체를 생성해서 참조값을 members라는 지역변수에 담아보세요.
List<Member> members = new ArrayList<>();
2. Member 객체를 하나 생성해서 참조값을 mem1이라는 지역변수에 담아보세요.
Member mem1 = new Member();
3. mem1 객체에 회원 한명의 정보를 담아보세요.
mem1.num = 1;
mem1.name = "김ㅇㅇ";
mem1.addr = "방이동";
4. Member 객체를 하나 생성해서 참조값을 mem2이라는 지역변수에 담아보세요.
Member mem2 = new Member();
5. mem2 객체에 회원 한명의 정보를 담아보세요.
mem2.num = 2;
mem2.name = "이ㅇㅇ";
mem2.addr ="자양동";
6. mem1과 mem2에 들어있는 참조값을 members을 이용해 배열에 저장해보세요.
members.add(mem1);
members.add(mem2);
7. 아래 코드의 의미를 생각해보세요.
List<Member> a = members;
Member b = members.get(0);
int c = members.get(0).num;
String d = members.get(0).name;
String e = members.get(0).addr;
8. members 가변배열에 저장된 값을 이용해서 회원 목록을 아래와 같은 형식으로 반복문을 활용해서 출력 되도록 해보세요.
번호 => 1, 이름 => 김구라, 주소 => 노량진
번호 => 2, 이름 => 해골, 주소 => 행신동
1) index 활용
for(int i=0;i<members.size();i++) {
System.out.println("번호 => "+members.get(i).num+", 이름 => "+members.get(i).name+", 주소 => "+members.get(i).addr);
}
2) 확장 for문 활용
for(Member tmp:members) {
System.out.println("번호 => "+tmp.num+", 이름 => "+tmp.name+", 주소 => "+tmp.addr);
}
전체 코드
MainClass04.java
package test.main;
import java.util.ArrayList;
import java.util.List;
import test.mypac.Member;
public class MainClass04 {
public static void main(String[] args) {
//Member type을 저장할 수 있는 ArrayList 객체를 생성해서 참조값을 members라는
//지역변수에 담아보세요.
List<Member> members = new ArrayList<>();
//Member 객체를 하나 생성해서 참조값을 mem1이라는 지역변수에 담아보세요.
Member mem1 = new Member();
//mem1 객체에 회원 한명의 정보를 담아보세요.
mem1.num = 1;
mem1.name = "김ㅇㅇ";
mem1.addr = "방이동";
//Member 객체를 하나 생성해서 참조값을 mem2이라는 지역변수에 담아보세요.
Member mem2 = new Member();
//mem2 객체에 회원 한명의 정보를 담아보세요.
mem2.num = 2;
mem2.name = "이ㅇㅇ";
mem2.addr ="자양동";
//mem1과 mem2에 들어있는 참조값을 members을 이용해 배열에 저장해보세요.
members.add(mem1);
members.add(mem2);
//아래 코드의 의미를 자세히 생각해보세요.
List<Member> a = members;
Member b = members.get(0);
int c = members.get(0).num;
String d = members.get(0).name;
String e = members.get(0).addr;
//members 가변배열에 저장된 값을 이용해서 회원 목록을 아래와 같은 형식으로
//반복문을 활용해서 출력 되도록 해보세요.
/*
* 번호 => 1, 이름 => 김구라, 주소 => 노량진
* 번호 => 2, 이름 => 해골, 주소 => 행신동
*
*/
//1. index 활용
for(int i=0;i<members.size();i++) {
System.out.println("번호 => "+members.get(i).num+", 이름 => "+members.get(i).name+", 주소 => "+members.get(i).addr);
}
//2. 확장 for문 사용
for(Member tmp:members) {
System.out.println("번호 => "+tmp.num+", 이름 => "+tmp.name+", 주소 => "+tmp.addr);
}
}
}
'development > Java' 카테고리의 다른 글
[Java] Util Class #3 HashSet (0) | 2021.11.09 |
---|---|
[Java] Util Class #2 HashMap , 집합 Set, 반복자 Iterator (0) | 2021.11.09 |
[Java] 인터페이스 Interface / 함수형 인터페이스 FuntionalInterface, 람다식 (0) | 2021.11.08 |
[Java] 추상 클래스 Abstract Class #2 / 내부 클래스 inner class, 로컬 내부 클래스 local inner class, 익명의 클래스 (0) | 2021.11.07 |
[Java] 추상 클래스 Abstract Class #1 (0) | 2021.11.07 |
- Total
- Today
- Yesterday
- 브루트 포스
- 덱
- javascript
- 고득점 키트
- Oracle
- 큐
- jsp
- jQuery
- append
- 자바
- Java
- bootstrap
- 단계별로풀어보기
- 프로그래머스
- baekjoon
- 자바스크립트
- brute force
- html
- 파이썬
- 정렬
- web
- 스프링
- 문자열
- 장고
- python
- 백준
- CSS
- R
- Django
- Case When
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |