반응형
- C0911어레이리스트
- C0911개념01어레이리스트
- 실제로 대부분의 웹에서는 ArrayList 사용한다.
- 그러면 그간의 배열로는 왜 했나?
- 최적화 할때는 배열을 쓸 수 밖에 없다.
- 어레이리스트의 함수중 add함수가. 딜레이를 준다.
- 메모리. 그때 그때 늘리는것
- new를 계속 하는것
- 일방적인 웹에서는 어레이리스를 많이 쓴다.
- 편하니까.
- 최적화는 아니다.
- 그냥 배열은 한번 로딩하고 더 이상 로딩하지 않는다.
- 어레이리스트는 new를 할때마다 로딩
- 자바는 애초에 무거운것을 잘 안 만든다.
- 자바가 애초에 무거워서
- 실제로 대부분의 웹에서는 ArrayList 사용한다.
package C0911어레이리스트;
import java.util.ArrayList; //임포트 해야된다.
/*
# 어레이리스트
[1] 기본 배열은 max 값을 정해놓고 그이상은 저장할수가 없었다.
[2] 어레이리스트는 가변배열로 무한대로 저장이 가능하다.
# 사용법
[1-1] 랜덤과 마찬가지로 임포트 해야한다.
[1-2] import java.util.ArrayList;
[2-1] 변수 선언의 모습이 특이하다. <> 를 이용한다.
[2-2] ArrayList<String> list = new ArrayList<String>();
*/
public class C0911개념01어레이리스트 {
public static void main(String[] args) {
// int[] arr = {10, "문자", true, 3.14};
//------------------------------------------
//배열을 치면 이것과 같다.
//String[] arr = new String[4]; //배열 잡을때만 로딩하는것
//arr[0] = "a";
//// 1. 값 추가하기 : add() => 같다.
//------------------------------------------
ArrayList<String> list = new ArrayList<String>();
//배열 생김
//임포트 해야한다.
//가변배열
//자바스크립트의 push이다.
//배열과 같다.
//다만 String만 담을 수 있다.
//실제로 대부분의 웹에서는 ArrayList 사용한다.
//그러면 그간의 배열로는 왜 했나?
//최적화 할때는 배열을 쓸 수 밖에 없다.
//어레이리스트의 함수중 add함수가. 딜레이를 준다.
//메모리. 그때 그때 늘리는것
//new를 계속 하는것
// 1. 값 추가하기 : add()
//함수 add가 있다.
list.add("a");
list.add("b");
list.add("c");
list.add("d");
// 2. 출력
System.out.println(list);
// 3. 길이 : size()
System.out.println(list.size());
//자바스크립트에서는 length 이다.
// 4. 값 추출 : get(index)
System.out.println(list.get(0));
//값을 쓸때는 .get()이다.
// arr[0] 와 같다.
for(int i=0; i<list.size(); i++) {
System.out.print(list.get(i) + " ");
} //get으로 출력하는거다.
//arr[i]와 같은거다.
System.out.println();
// 5. 값 수정 : set(인덱스, 변경할 값)
// arr[0] = 100;
list.set(1, "z"); //1번을 z로 바꿔라.
//수정은 set 함수가 있다.
// set (인덱스, 값)
// 기존의 배열과 같은 것은 . arr[1] = "z";
//값 새로 넣는것과 같다.
for(int i=0; i<list.size(); i++) {
System.out.print(list.get(i) + " ");
}
System.out.println();
// 6. 값 삭제 : remove(인덱스)
list.remove(1); //삭제 함수
for(int i=0; i<list.size(); i++) {
System.out.print(list.get(i) + " ");
}
}
}
- C0911개념02어레이리스트
package C0911어레이리스트;
import java.util.ArrayList;
/*
어레이리스트와 일반배열 둘을 비교해보자.
*/
public class C0911개념02어레이리스트 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
String[] str = new String[100];
//위의 2개가 같다.
int count = 0;
//------------------------------------
//[1] 추가
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
str[count] = "aaa";
count += 1;
str[count] = "bbb";
count += 1;
str[count] = "ccc";
count += 1;
str[count] = "ddd";
count += 1;
// add함수가. 밑의 있는것과 같다.
//------------------------------------
//[2] 삭제
// bbb를 삭제해보자.
int removeIndex = 1;
list.remove(removeIndex);
for(int i = removeIndex; i < count - 1; i++) {
str[i] = str[i + 1];
}
str[count] = "";
count -= 1;
//삭제가 위의 것이 같다.
//------------------------------------
//[3] 수정
// ccc 를 kkk 로변경 ; // 위에서 삭제했으므로 aaa , ccc , ddd 3개만있다.
int updateIndex = 1;
String updateValue = "kkk";
list.set(updateIndex , updateValue );
str[updateIndex] = updateValue;
//수정 위의 2개와 같다.
//------------------------------------
//[4] 출력
for(int i = 0; i < list.size(); i++) {
String temp = list.get(i);
System.out.println(temp);
}
System.out.println("-------------------");
for(int i = 0; i < count; i++) {
String temp = str[i];
System.out.println(temp);
}
}
}
- C0911개념03어레이리스트
package C0911어레이리스트;
import java.util.ArrayList;
/*
어레이리스트(정수형)
[1] 어레이리스트에서는 기존의 int는 사용할 수 없다.
[2] Integer로 변수를 선언해야한다.
[3] 선언만 Integer로 하고 나머지는 똑같다.
*/
public class C0911개념03어레이리스트 {
public static void main(String[] args) {
// int는 사용할 수 없고 Integer로 바꿔줘야한다.
// ArrayList<int> list = new ArrayList<int>();
ArrayList<Integer> list = new ArrayList<Integer>();
//ArrayList<Integer>
//꺽쇠에 자료형을 넣어 줘야 한다.
//완전 자유는 아니다. 자바스크립트처럼
//int는 Integer라고 해야한다.
//꺽쇠 안에 String(문자열). Integer(정수)
//추가
list.add(10);
list.add(20);
list.add(30);
list.add(40);
//삭제
list.remove(1); // 20이 삭제된것이다.
//수정
list.set(2, 100);
// 인덱스2면 10,30,40 에서 40을 뜻한다.
// 40이 100으로 바뀐것이다.
System.out.println("------------------");
//출력
for(int i = 0; i < list.size(); i++) {
int temp = list.get(i);
System.out.println(temp);
}
System.out.println("------------------");
}
}
- C0911개념04어레이리스트
- 컨트롤러 만든것
- 기존의 배열을 가지고 만들었다면.
- 어레이리스트로 만들어 본것
package C0911어레이리스트;
import java.util.ArrayList;
import java.util.Scanner;
public class C0911개념04어레이리스트 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
ArrayList<Integer> numberList = new ArrayList<Integer>();
while(true) {
System.out.println(numberList);
System.out.println();
System.out.println("[컨트롤러]");
System.out.println("[1] 추가 [2] 삭제 [3] 검색 [4] 출력 [5] 수정 [0] 종료");
int sel = scan.nextInt();
if(sel == 0) {
break;
}else if(sel == 1) {
System.out.print("[추가]값 입력 : ");
int value = scan.nextInt();
// 중복검사
boolean check = false;
for(int i=0; i<numberList.size(); i++) {
if(value == numberList.get(i)) {
check = true;
break;
}
}
if(check == false) {
numberList.add(value);
} else {
System.out.println("중복되는 값입니다.");
}
}else if(sel == 2) {
System.out.print("[삭제]값 입력 : ");
int value = scan.nextInt();
// 값 유효성 검사
int check = -1;
for(int i=0; i<numberList.size(); i++) {
if(value == numberList.get(i)) {
check = i;
break;
}
}
if(check == -1) {
System.out.println("삭제할 수 없는 값입니다.");
} else {
numberList.remove(check);
}
}else if(sel == 3) {
System.out.print("[검색]값 입력 : ");
int value = scan.nextInt();
// 값 유효성 검사
int check = -1;
for(int i=0; i<numberList.size(); i++) {
if(value == numberList.get(i)) {
check = i;
break;
}
}
if(check == -1) {
System.out.println("값 입력 오류입니다.");
} else {
System.out.println("입력하신 값은 " + check + "번째 위치하고 있습니다.");
}
}else if(sel == 4) {
for(int i=0; i<numberList.size(); i++) {
System.out.println(numberList.get(i) + " ");
}
}else if(sel == 5) {
System.out.print("[수정]값 입력 : ");
int value = scan.nextInt();
// 값 유효성 검사
int check = -1;
for(int i=0; i<numberList.size(); i++) {
if(value == numberList.get(i)) {
check = i;
break;
}
}
if(check == -1) {
System.out.println("값 입력 오류입니다.");
} else {
System.out.print("[수정]변경할 값 입력 : ");
int newValue = scan.nextInt();
// 중복검사
boolean result = false;
for(int i=0; i<numberList.size(); i++) {
if(numberList.get(i) == newValue) {
result = true;
break;
}
}
if(result == false) {
numberList.set(check, newValue);
} else {
System.out.println("값이 중복됩니다.");
}
}
}
}
scan.close();
}
}
- C0911개념05어레이리스트
- 회원가입
package C0911어레이리스트;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
/*
# ArrayList 2차원
회원관리데이터
[1] 번호 [2] 아이디 [3] 비밀번호
테스트를 위해 아래 기본데이터 4개를 넣고 시작한다.
*/
public class C0911개념05어레이리스트 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 번호, id, pw
int[] test1 = { 1001, 1234, 1111 };
int[] test2 = { 1002, 2345, 2222 };
int[] test3 = { 1003, 3456, 3333 };
int[] test4 = { 1004, 4567, 4444 };
ArrayList<int[]> memberList = new ArrayList<int[]>();
//<int[]> => int배열은 이게 된다.
//int 한개는 Integer 인데. 정수
//배열은 된다.
//총 3개가 들어 갈 수 있다.
//<String> . 문자
//<int[]> . 정수배열
//<Integer> . 정수
int lastNumber = 1000;
memberList.add(test1);
lastNumber += 1;
memberList.add(test2);
lastNumber += 1;
memberList.add(test3);
lastNumber += 1;
memberList.add(test4);
lastNumber += 1;
while(true) {
for(int i=0; i<memberList.size(); i++) {
System.out.println(Arrays.toString(memberList.get(i)));
}
System.out.println();
System.out.println("[회원관리]");
System.out.println("[1] 추가 [2] 삭제 [3] 수정 [4] 검색 [5] 출력 [0] 종료");
int sel = scan.nextInt();
if(sel == 0) {
break;
}
else if(sel == 1) {
System.out.print("[추가]아이디 입력 : ");
int id = scan.nextInt();
// 아이디 중복검사
int index = -1;
for(int i = 0; i < memberList.size(); i++) {
int[] temp = memberList.get(i);
if(id == temp[1]) {
index = i;
break;
}
}
if(index == -1) {
System.out.print("[추가]비밀번호를 입력 : ");
int pw = scan.nextInt();
int[] data = new int[3];
lastNumber += 1;
data[0] = lastNumber;
data[1] = id;
data[2] = pw;
memberList.add(data);
}else {
System.out.println("중복아이디입니다. ");
}
}
else if(sel == 2) {
System.out.print("[삭제]아이디 입력 : ");
int id = scan.nextInt();
// 아이디 유효성검사
int index = -1;
for(int i = 0; i < memberList.size(); i++) {
int[] temp = memberList.get(i);
if(id == temp[1]) {
index = i;
break;
}
}
if(index == -1) {
System.out.println("아이디를 확인해주세요.");
} else {
memberList.remove(index);
}
}
else if(sel == 3) {
System.out.print("[수정]아이디 입력 : ");
int id = scan.nextInt();
// 아이디 유효성검사
int index = -1;
for(int i = 0; i < memberList.size(); i++) {
int[] temp = memberList.get(i);
if(id == temp[1]) {
index = i;
break;
}
}
if(index == -1) {
System.out.println("아이디를 확인해주세요.");
} else {
System.out.print("[수정]변경할 비밀번호 입력 : ");
int newPw = scan.nextInt();
int[] data = memberList.get(index);
data[2] = newPw;
// memberList.set(index, data);
}
}
else if(sel == 4) {
System.out.print("[검색]아이디 입력 : ");
int id = scan.nextInt();
// 아이디 유효성검사
int index = -1;
for(int i = 0; i < memberList.size(); i++) {
int[] temp = memberList.get(i);
if(id == temp[1]) {
index = i;
break;
}
}
if(index == -1) {
System.out.println("아이디를 확인해주세요.");
} else {
int[] data = memberList.get(index);
System.out.println("NO : " + data[0]);
System.out.println("ID : " + data[1]);
System.out.println("PW : " + data[2]);
}
}
else if(sel == 5) {
for(int i=0; i<memberList.size(); i++) {
int[] temp = memberList.get(i);
System.out.printf("No : %d\tID : %d\tPW : %d\n", temp[0], temp[1], temp[2]);
}
System.out.println();
}
}
scan.close();
}
}
반응형
'코딩 > 2-JAVA' 카테고리의 다른 글
C1005파싱 , C1006입력 (1) | 2025.06.27 |
---|---|
C1001문자열, C1002문자열함수, C1003형변환, C1004문자열과데이터 (0) | 2025.06.27 |
C0910이차배열입력 (0) | 2025.06.27 |
C0909이차배열과데이터 (0) | 2025.06.27 |
C0907이차원메모리구조 , C0908행렬 (0) | 2025.06.26 |