티스토리 뷰

development/Java

[Java] Util Class #1 ArrayList

Happyoon ~ 2021. 11. 8. 23:43
728x90
반응형

java.util에는 여러 클래스가 존재한다. 

이번 게시물에서는 java.util에 존재하는 여러 클래스들 중 ArrayList에 대해 다뤄보도록 하겠다.

 

[ ArrayList ] 

자바의 배열을 다룰 때, 자바의 배열은 방의 크기를 조정할 수 없어 효율성이 떨어진다고 배웠었다. 

따라서, 가변배열 객체ArrayList에 대해 공부해보려 한다.

 

ArrayListList 인터페이스를 구현한 클래스이다.

따라서 다음과 같은 형식으로 작성할 수 있다.

 

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);
			
		}
	
	}
}
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함