본문 바로가기
JAVA

[JAVA] ArrayList

by KhyeonS 2022. 8. 3.

ArrayList


ArrayList는 collection 프레임워크의 일부로써 표준 배열보다는 느리지만 배열을 여러번 수행할 때 편리하다.

List 인터페이스를 상속받아서 사용한다.

ArrayList는 객체가 추가 되어 배열의 용량을 초과하면 자동으로 부족한 크기만큰 용량을 늘려준다.

주로 <Integer>를 많이 사용하고 String, Character 타입으로도 선언할 수 있다.

 

ArrayList에서 값을 추가하려면 add(Object)는 마지막에 값 추가,

add(int index,  Object)는 해당 index에 값 추가. 값 변경은 set() 메써드를 사용한다.

set(int index, Object)식이다. 값 삭제는 remove()는 하나의 값을 제거 remove(int index), clear()는 모든 값 제거에서 사용된다.

크기는 size()를 사용한다. 값 출력은 get(int index)하면 해당 인덱스의 값을 추출 <= for 문과 함께 iterator를 사용할 수도 있다.

 

배열과 같지만 배열은 크기가 미리 int[] ar = new int[10]; 이런식으로 정해져 있다 하지만 List 구조는 size가 늘었다가 줄었다가 유동적이다.

 

package java13;

import java.util.ArrayList;
import java.util.Iterator;

public class Test04 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList<Integer> list = new ArrayList<>();  // 고정 크기가 없다.
		System.out.println("list.size() : "+list.size());
		list.add(100);
		list.add(20);
		System.out.println("list.size() : "+list.size());
		for (int i = 0; i < list.size(); i++) {
			System.out.println("for - "+list.get(i));
			Iterator<Integer> it = list.iterator();
			while (it.hasNext()) {
				int v = it.next();
				System.out.println("iterator"+v);
				
			}
			
		}
	}

}

 

package java13;
import java.util.ArrayList;
import java.util.Iterator;
public class Test05 {
	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<String>();
		list.add("홍길동");
		list.add("이순신");
		list.add("강감찬");
		list.add("을지문덕");
		list.add("연개소문");
		System.out.println(list);
		System.out.println("---------------------");
		System.out.println("list[0] : " + list.get(0));
		System.out.println("list[2] : " + list.get(2));
	}
}

package java13;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class Test05 {
	public static void main(String[] args) {
		ArrayList<String> arr = new ArrayList<String>();
		while (true) {
			System.out.println("아이디 생성 : ");
			Scanner scan = new Scanner(System.in);
			String id = scan.next();
			arr.add(id);
			for (int i = 0; i < arr.size(); i++) {
				System.out.println(arr.get(i));
				
			}
			
		}
		
	}
}

 

package java13;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class Test05 {
	public static void main(String[] args) {
		ArrayList<String> arr = new ArrayList<String>();
		outer : while (true) {
			System.out.print("아이디 생성 : ");
			Scanner scan = new Scanner(System.in);
			String id = scan.next();
			for (int i = 0; i < arr.size(); i++) {
				if (id.contentEquals(arr.get(i))) {
					System.out.println("중복된 ID");
					continue outer;
				}
				// OR if (arr.contains(id)){
//				System.out.println("중복된 ID");
//					continue outer;
				
				
			}
			arr.add(id);
				for (int j = 0; j < arr.size(); j++) {
					System.out.println(arr.get(j));
				}
				
		}
		
	}
}


Q1) 유저의 아이디와 패스워드를 가지는 UserInfo 클래스를 하나 만들고, Main 클래스에서 유저의 정보를 어레이리스트에 추가하여 출력해보자.

 

package java13;

import java.util.ArrayList;
import java.util.Scanner;

class UserInfo{
	private String id;
		private int pwd;
		public String getId() {
			return id;
		}
		public void setId(String id) {
			this.id = id;
			
		}
		public int getPwd() {
			return pwd;
		}
		public void setPwd(int pwd) {
			this.pwd = pwd;
		}
}
public class Test06 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList<UserInfo> arr = new ArrayList<>();
		outer : while (true) {
			System.out.println("아이디 생성 : ");
			Scanner scan = new Scanner(System.in);
			UserInfo ui = new UserInfo();
			ui.setId(scan.next());
			for (int i = 0; i < arr.size(); i++) {
				if (ui.getId().equals(arr.get(i).getId())) {
					System.out.println("아이디가 중복됩니다. 다른아이디를 사용하세요.");
					continue outer;
				}
				
			}
			
			System.out.println("패스워드 입력 : ");
			Scanner scan2 = new Scanner(System.in);
			ui.setPwd(scan2.nextInt());
			arr.add(ui);
			for (int i = 0; i < arr.size(); i++) {
				System.out.println(arr.get(i).getId());
				System.out.println(arr.get(i).getPwd());
				System.out.println("-----------");
				
			}
			
		}
		
				
			
	}
	
		
}

Q2)

 

package java13;

import java.util.ArrayList;
import java.util.Scanner;

class Person{
	private String name;
	private int age;
	private String tel;
	public void setAge(int age){
		this.age=age;
	}
	public int getAge(){
		return age;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	public String getTel() {
		return tel;
	}
}
class PersonManage{
	public void personMgr() {
		int select;
		Person p; //Person 객체를 저장할 수 있는 ArrayList 객체 생성
		ArrayList<Person> personArr = new ArrayList<>();
		while (true) {
			System.out.println("1. 정보추가");
			System.out.println("2. 정보삭제");
			System.out.println("3. 전체정보");
			System.out.println("4. 종료");
			System.out.println("항목 선택 : ");
			Scanner scan = new Scanner(System.in);
			select = scan.nextInt();
		switch (select) {
			case 1: 
				p = new Person();
				System.out.println("정보추가");
				System.out.println("이름 : ");
				p.setName(scan.next());
				System.out.println("정보추가");
				System.out.println("나이 : ");
				p.setAge(scan.nextInt());
				System.out.println("정보추가");
				System.out.println("전화 : ");
				p.setTel(scan.next());
				personArr.add(p);
				System.out.println("정보가 저장되었습니다.");
				System.out.println("--------------");
				break;
			case 2:
					System.out.println("정보 삭제");
					System.out.println("삭제할 이름 : ");
					String name = scan.next();
					for (int i = 0; i < personArr.size(); i++) {
						if(personArr.get(i).getName().contentEquals(name)) {
							personArr.remove(i);
							System.out.println(name + "의 정보를 삭제");
							break;
						}else {
							if (i+1==personArr.size())  //더 이상 데이터가 없음
								System.out.println(name+"이 없습니다.");
							
								
							}
						}
						break;
				case 3:
					System.out.println("전체 정보");
					System.out.println("등록인 수 "+personArr.size()+"명");
					for (int j = 0; j < personArr.size(); j++) {
						System.out.println("이름 : "+personArr.get(j).getName());
						System.out.println("나이 : "+personArr.get(j).getAge());
						System.out.println("전화 : "+personArr.get(j).getTel());
						System.out.println("-------------");
							}
					break;
				default:
					System.out.println("프로그램 종료");
					}//swich
			}
			}
}
	
public class Test07Q2 {
	public static void main(String[] args) {
		PersonManage pMgr = new PersonManage();
		pMgr.personMgr();
	
	}

}

 

'JAVA' 카테고리의 다른 글

[JAVA] Lamda식  (0) 2022.08.03
[JAVA]collections, set/list/map인터페이스  (0) 2022.08.03
[JAVA] MAP  (0) 2022.08.03
[JAVA] Set  (0) 2022.08.02
[JAVA] wait()과 notify()  (0) 2022.08.02

댓글