유디의 공간정보·개발일기
H5-6. 0723_ ArrayList (Collection API) 본문
[CollectionTest]
package myjdbc;
import java.util.ArrayList;
import java.util.Calendar;
public class CollectionTest {
public static void main(String[] args) {
//배열 --> 선언, 생성, 할당, 참조
//배열의 문제점 : 변경이 안되고, 크기가 정해져 있다. --> 가변적 크기로 하려면 ArrayList로 해결
//ArrayList는 동적배열, Container(-역할을 함)
//ArrayList<> 타입을 지정하지 않고 만들 수 있다.
// ArrayList list = new ArrayList(); //list : ArrayList 타입의 로컬변수 //ArrayList를 생성
// String str = "haha";
// list.add(str); //add : ArrayList내에 있는 함수
// list.add(500); //할당
// list.add(new EmpVO());
//
// System.out.println(list.get(0)); //index 참조해서 출력 //get: 리턴타입은 Object(커서올리면 나옴)
// Object obj = list.get(0); //Object클래스 : 모든 클래스의 superclass(최상위 클래스)
// //0번지에는 문자열 "haha"가 담겨있음
// String str2 = (String) list.get(0); //get이 object를 참조?하니까? 스트링에 넣어줘야 하니까 형변환해주기
// str2.length();
//<E> : general type -처음부터 타입을 지정하고 만듦 --> 형변환을 해주지 않아도 되는 장점이 있다.
ArrayList<String> list1 = new ArrayList<String>(); //"매개변수가 없이 디폴트값으로 생성자 함수를 호출하는 것"
// list1.add(500); //500이 String이 아니므로 오류
list1.add("haha");
//API => 라이브러리 => (자바가 제공하는)클래스들
ArrayList<String> list = new ArrayList<String>(100); // ()안에 매개변수 넣는 것과 26줄(안 넣는 것)이랑 뭐가 다른가?
//차이점 : 매개변수 안넣으면 10칸(default값)씩 만들고 100을 넣으면 100만큼 만들고 필요할때 또 100칸이 추가로 만들어 값을 넣는다.
//new가 사용된 건 생성자 함수가 사용된 것 : "매개변수로 숫자를 받아들이는 생성자 함수가 호출됩니다." <--이 방법을 더 선호
list.add("haha");
String str = list.get(0);
System.out.println(list.size());
for(String tempStr : list) {
System.out.println(tempStr);
}
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//오늘날짜, 오늘부터 100일 후를 프로그램 내에서 계산해보기
//Calendar, Date등...
// Calendar cal = new Calendar(); //이런 생성자가 없기 때문에 오류
}
}
- 배열 : 같은 타입의 데이터를 연속된 공간에 나열하고 각 데이터에 인덱스를 부여해 놓은 자료구조
인덱스는 0번부터 자동 부여
* 단점 : 크기의 변경이 불가하다. 크기가 정해져 있다.
* 해결 : ArrayList를 사용한다.
- ArrayList에 매개변수 안 넣는 것 -> 디폴트 값으로 10칸씩 생성됨
- ArrayList에 매개변수 넣는 것 -> 지정한 매개변수 값 만큼 칸 생성됨, 필요하면 또 칸 추가됨
- API : 일종의 라이브러리, 자바가 제공하는 클래스들
- ArrayList -> Array로 conversion 하는 메서드 : toArray
+ Ex04_Solution 코드의 5번 과제 다시 해결
//5. 3의 배수만을 새로운 배열에 복사하여 리턴하는 함수
private static int[] makeNewList(int[] list) {
//도대체 3의 배수가 몇개나 있는지 모르기에 가변적인 배열 ArrayList
//일단 3의 배수가 몇개인지 체크한다.
int count = 0;
for(int ele : list) { //하나하나 꺼내서
if(ele%3 == 0) { //그 숫자가 3의 배수면
count++; //하나씩 더해준다.
}
}
//체크된 수만큼 배열을 생성한다.
int[] result = new int[count];
//반복문을 통해서 3의 배수를 배열에 넣는다.
int index = 0;
for(int i = 0; i < list.length; i++) {
if(list[i]%3 == 0) {
result[index] = list[i];
index++;
}
}
//배열을 리턴한다.
return result;
}
///////////////////////////////////////////////////////////////////////////\
// ArrayList로 다시
ArrayList<Integer> result = new ArrayList<Integer>();
for(int ele : list) {
if(ele%3 == 0) {
result.add(ele);
}
}
//ArrayList -> Array로 conversion(구글링 참조해서 ) 근데 안됨
Integer[] intArray = new Integer[result.size()];
result.toArray(intArray);
return intArray;
'JDBC' 카테고리의 다른 글
H5-7. 0723_ Interface, abstract, Constructor(생성자) (0) | 2021.10.31 |
---|---|
H5-5. 0723_ Prepared Statement로 질의하기, JDBC Test(계속) (0) | 2021.10.31 |
H5-4. 0723_ JDBC Test (0) | 2021.10.31 |
H5-3. 0723_ JDBC 10번 과제코드 (0) | 2021.10.31 |
H5-2. 0723_ 9번 과제코드, 문자열 거꾸로 출력하기 (0) | 2021.10.31 |