일단 해보는 코딩/Java

[Java] 컬렉션 프레임윅(Collections Framework) - ArrayList

eun_zoey2 2022. 8. 3. 16:19
728x90
ArrayList 의 특징
  1.  ArrayLists는 Collection 프레임워크의 일부로써 표준 배열보다는 느리지만 배열을 여러번 수행할 때 편리하다.
  2.  List 인터페이스를 구현하기 때문에 데이터의 저장순서가 유지되고 중복을 허용한다.
  3.  ArrayLists는  Object배열을 이용해서 데이터를 순차적으로 저장한다. 
  4.  ArrayLists는 배열의 용량을 초과하면 자동으로 부족한 크기만큼 용량을 늘려준다. 
  5.  주로 <Integer>를 많이 사용하고  String, Character 타입으로도 선언 할 수 있다. 

 

 

예제 1)

 

 

ackage Java13;

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

public class Test07 {
	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));
	}
}

 

예제 2)

 

package Java13;

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

public class Test08 {
	public static void main(String[] args) {
		ArrayList<String> arr = new ArrayList<String>();
		outer: while (true) {
			System.out.print("아이디 생성 : ");
			Scanner sc = new Scanner(System.in);
			String id = sc.next();
			for (int i = 0; i < arr.size(); i++) {
				/*
				 * if (id.contentEquals(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));
			}

		}
	}
}

 

예제 3)

 

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;
		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("나이 : ");
				p.setAge(scan.nextInt());
				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("프로그램 종료");
				
			}
		}
	}
}

public class Test09 {

	public static void main(String[] args) {
		PersonManage pMgr = new PersonManage();
		pMgr.personMgr();
	}
}

 

※ 컬렉션 프레임윅 간단 정리

 

인터페이스 특징
List   순서가 있는 데이터의 집합. 데이터의 중복을 허용한다.
  예) 대기자 명단
  구현클래스 : ArrayList, LinkedList, Stack, Vector 등
Set   순서를 유지하지 않는 데이터의 집합, 데이터 중복을 허용하지 않는다. 
  예) 양의 정수집합, 소수의집합
  구현클래스 : HashSet, TreeSet 등
Map   키(key)와 값(value)의 쌍(pair)으로 이루어진 데이터의 집합 순서는 유지되지 않으며, 키는 중복으로 허용하지 않고,값은 중복을 허용 한다.
  예) 우편번호, 지역번호(전화번호)
  구현클래스 : HashMap, TreeMap, Hashtable, Properties 등

| 참고 | 키(Key)란, 데이터 집합 중에서 어떤 값(value)을 찾는데 열쇠(key)가 된다는 의미에서 붙여진 이름이다. 그래서 키(key)는 중복을 허용하지 않는다.