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 |