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 |
댓글