본문 바로가기

코딩/JAVA

JAVA 29-2. 컬렉션 프레임워크 - List

ArrayList

컬렉션 프레임워크의 일부로써 표준배열보다는 늘지만 배열을 여러번 수행할 때 편리하다. List 인터페이스를 상속받아서 사용한다. ArrayList는 객체가 추가되어 배열의 용량을 초과하면 자동을 부족한 크기만큼 용량을 늘려준다. 주로 <Integer>를 많이 사용하고 String, Character 로도 선언할 수 있다.

ArrayList에서 값을 추가하려면 add(Object)는 마지막에 값 추가, add(int index, Object)는 해당 index에 값 추가. 값 변경은 set() 메서드를 사용한다. set(int index, Object)식이다. 값 삭제는 remove(int index)로 하나의 값 제거, clear()로 모든 값 제거로 이용한다. 크기는 size(), 값 출력은 get(int index)하거나 for문과 함께 iterator를 사용한다.

iterator는 모든 컬렉션프레임워크에 대응 가능하지만 

1. 처음부터 끝까지의 단방향 반복만 가능하고

2. 값을 변경하거나 추가가 불가능하고

3. 대량의 데이터를 제어할 때 속도가 느리다

배열과 같지만 배열과 달리 크기가 정해져있지않고 유동적이다.

package java13;

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

public class Test04 {

	public static void main(String[] args) {
		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(list.get(i));
		}
		System.out.println("------------------");
		Iterator<Integer> it = list.iterator();
		while(it.hasNext()) {
			int v = it.next();
			System.out.println(v);
		}

	}

}

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.println("아이디 생성: ");
			Scanner scan = new Scanner(System.in);
			String id = scan.next();
			
			for (int i=0; i<arr.size(); i++) {
				if (id.equals(arr.get(i))) {
					System.out.println("중복된 ID");
					continue outer;
				}
			}
			// 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));
			}
		}
	}
}

package java13;
import java.util.ArrayList;
import java.util.Scanner;

class UserInfo2 {
	String id;
	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) {
		ArrayList<UserInfo2> arr = new ArrayList<UserInfo2>();
		outer : while (true) {
			UserInfo2 ui = new UserInfo2();
			
			System.out.println("아이디 생성");
			Scanner scan = new Scanner(System.in);
			ui.setId(scan.next());
			for (int i = 0; i<arr.size(); i++) {
				if (ui.getId().contentEquals(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());
			}
		}
	}
}

package java13;

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

class Person {
	String name;
	int age;
	String phone;
	
	void setName(String name) {
		this.name = name;
	}
	String getName() {
		return name;
	}
	void setAge(int age) {
		this.age = age;
	}
	int getAge() {
		return age;
	}
	void setPhone(String phone) {
		this.phone = phone;
	}
	String getPhone() {
		return phone;
	}
}

class PersonManage {
	void PersonMgr() {
		ArrayList<Person> arr = new ArrayList<Person>();
		Person ps;
		
		outer : while(1>0) {
			System.out.println("무엇을 하실건가요?");
			System.out.println("1. 정보추가 / 2. 정보삭제 / 3. 전체정보 / 4. 종료");
			Scanner scan = new Scanner(System.in);
			int doWhat = scan.nextInt();
		
			if (doWhat == 1) {
				ps = new Person();
				
				System.out.print("이름 : ");
				Scanner scanname = new Scanner(System.in);
				ps.setName(scanname.next());
				
				System.out.print("나이 : ");
				Scanner scanage = new Scanner(System.in);
				ps.setAge(scanage.nextInt());
				
				System.out.print("연락처 : ");
				Scanner scanphone = new Scanner(System.in);
				ps.setPhone(scanphone.next());
				
				arr.add(ps);
				System.out.println("저장 완료");
				System.out.println("-------------------------");
				
			} else if (doWhat == 2) {
				System.out.println("삭제할 인원의 연락처를 입력해주세요");
				Scanner scanphone = new Scanner(System.in);
				for (int i=0; i<arr.size(); i++) {
					if (scanphone.next().contentEquals(arr.get(i).getPhone()))  {
						arr.remove(i);
						System.out.println("삭제 완료");
						System.out.println("-------------------------");
						continue outer;
					}
				}
				System.out.println("조건에 일치하는 데이터가 없습니다.");
				System.out.println("-------------------------");
				
			} else if (doWhat == 3) {
				System.out.println("등록인원 " +arr.size()+ "명");
				for (int i=0; i<arr.size(); i++) {
					System.out.println("이름 : " +arr.get(i).getName());
					System.out.println("나이 : " +arr.get(i).getAge());
					System.out.println("연락처 : " +arr.get(i).getPhone());
					System.out.println("-------------------------");
				}
			} else if (doWhat == 4) {
				System.out.println("hasta la vista");
				return;
			}
		}
	}
}

public class Q2 {
	public static void main(String[] args) {
		PersonManage pm = new PersonManage();
		pm.PersonMgr();
	}
}

'코딩 > JAVA' 카테고리의 다른 글

JAVA 30. 람다식  (0) 2022.08.08
JAVA 29-3. 컬렉션 프레임워크 - SET  (0) 2022.08.08
JAVA 29-1. 컬렉션 프레임워크 - MAP  (0) 2022.08.08
JAVA 29. 컬렉션 프레임워크  (0) 2022.08.08
JAVA 28-1. 쓰레드2  (0) 2022.08.08