일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- mysql오류
- StringBuffer
- 참조변수
- 청년적금
- Java
- 청년희망적금
- 자바기초
- if문
- 개발공부
- MySQL
- 2022청년희망적금
- 자바스크립트
- 이클립스설치
- apachetomcat
- 자바배열
- 자바
- 자바문자열연결
- 배열함수
- insert
- 청년희망적금미리보기
- 이클립스
- 자바공부
- equals()
- 공부
- Eclipse
- 자바강의노트
- 자바스크립트배열
- 저축장려금
- 신한은행청년희망적금
- ToString()
- Today
- Total
eterno
JAVA 17일차. 자료구조와 Array List 본문
자료구조(data structure)
: 자료를 담는 구조(형식)
- 데이터는 문자로 이루어져있고 그 데이터를 담는 구조를 자료구조라고 한다.
배열의 특징
- 객체 배열이다. ( 참조 자료형을 쓰고 new키워드로 메모리에 올림)
- 인덱스(데이터 가르키는 순서)가 있다.
- DataType가 동일 해야 한다. ( ex) int[] = new int[4]);
- Data의 길이(length)가 정해져 있다.
자바 컬렉션 프레임워크(Java Collection Framework)
: 자바로 프로그래밍 할 때 필요한 자료구조를 미리 구현하여 java.util.* 패키지에다가 제공하는 것
- java.util.* 패키지는 자바의 자료구조이다.
- ArrayList, HashMap 등등 여러 인터페이스가 정의되어 있다.
Array List
: 객체배열을 구현한 클래스(객체 순서를 기반으로 순차적으로 자료를 관리하는 프로그램을 구현할때 사용)
Array List 특징
- 객체배열이다.
- 인덱스를 갖고 순서와 순차적으로 구현된다.
- 데이터 타입 에 있어서 자유롭다(데이터 타입이 달라도 된다.)
- 데이터를 입력할 때는 자료형 상관없이 쓸 수 있자만 출력할 때는 형에 맞춰서 출력해 줘야한다.(캐스팅해야한다) - 데이터 길이가 제한이 없다.
* ArrayList()는 기본적으로 10개의 공간을 만들어주고 만약 11개를 입력하면 추가로 10개의 공간을 만들어 준다.
- * ArrayList를 사용하는 이유는 데이터를 담기 위해서이다.
ex) String so = "abc"; //”abc”문자열을 변수 so로 선언
aList.add(so); //ArrayList클래스에 so객체 추가
Object o = aList.get(0); //so는 String형인데 get()메소드로인해 Object로 형변환됨
String os = (String)o; // String으로 사용하기 위해서는 형변환을 해야한다.
ArrayList클래스의 주요 메소드
add(): 객체 추가(배열의 길이와 상관없이 추가 가능)
size() : 길이를 구하는 함수( ≠ length() )
get() : 값을 반환
기본형식
ArrayList<E> 배열이름 = new ArrayList<E>();
* E는 자료형을 의미한다
예제)
예제) 3개짜리 공간을 만들고 4번째 데이터를 입력해도 ArrayList에서는 입력 가능하다.
ArrayList함수에서 사용되는 변수는 get으로 호출되는데 get()함수의 리턴형은 Object이다. ( public Object get(int index))
따라서 콘솔에 출력하기 위해서는 형변환을 해야한다.
형변환 방법1
Object aList_Object = aList.get(0);
String aList_String = (String)aList_Object;
System.out.println("aList_String >>> : " + aList_String);
형변환 방법2
String sV = String.valueOf(aList_Object); System.out.println("sV >>> : " + sV);
제너릭(Generic)
: 어떤 값이 하나의 참조 자료형이 아닌 여러 참조 자료형을 사용 할 수 있도록 프로그래밍하는 것
- jdk 1.5에서 처음 등장하였다.
- < > 안에 자료형을 입력하면 < > 안에 있는 자료형만 입력할 수 있다.
- <T> Type : 클래스타입
- <E> Element : Object
- <K> Key : key = value의 key
- <V> Value : key = value 의 value
- <N> Number : 숫자
- <?> 와일드카드 : 클래스타입을 정하지 않고 사용할 때
TestMemberVO 클래스
package a.b.c.ch5;
public class TestMemberVO {
// information hiding, encapsulation 정보은닉
private String name;
private String email;
private String hp;
private String addr;
public TestMemberVO() {
}
public TestMemberVO(String name, String email, String hp, String addr) {
this.name = name;
this.email = email;
this.hp = hp;
this.addr = addr;
}
// get + N + ame (get + name)
public String getName() {
return name;
}
// set + N + ame (set + name)
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public String getHp() {
return hp;
}
public String getAddr() {
return addr;
}
public void setEmail(String email) {
this.email = email;
}
public void setHp(String hp) {
this.hp = hp;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
예제)아래의 TestMemberVO 클래스를 호출하여 출력하기
package a.b.c.ch6;
import java.util.ArrayList;
public class TestMember_5 {
public ArrayList<TestMemberVO> testMember(TestMemberVO tvo) {
System.out.println("TestMember_5.testMember() 함수 >>> : ");
System.out.println("testMember() >>> : tvo " + tvo);
System.out.println("tvo.getName() >>> : " + tvo.getName());
System.out.println("tvo.getemail() >>> : " + tvo.getEmail());
System.out.println("tvo.gethp() >>> : " + tvo.getHp());
System.out.println("tvo.getaddr() >>> : " + tvo.getAddr());
//인스턴스
ArrayList<TestMemberVO> aList = new ArrayList<TestMemberVO>();
System.out.println("testMember() >>> : aList " + aList);
aList.add(tvo);
System.out.println("testMember() >>> : aList " + aList);
return aList;
}
public static void main(String[] args) {
// 지역변수 초기화
String name = "홍길동";
String email = "abcfje@naver.com";
String hp = "010-1234-5678";
String addr = "서울시 강남구";
TestMemberVO tvo = null;
tvo = new TestMemberVO();
tvo.setName(name);
tvo.setEmail(email);
tvo.setHp(hp);
tvo.setAddr(addr);
TestMember_5 tm_5 = new TestMember_5();
ArrayList<TestMemberVO> aList = tm_5.testMember(tvo);
System.out.println("\nTestMember_5.main() for 문 >>> : \n");
for(int i = 0; i < aList.size(); i++) {
System.out.println("main() >>> : aList " + aList);
TestMemberVO _tvo = aList.get(i);
System.out.println("main() >>> : _tvo " + _tvo);
System.out.println(_tvo.getName() + " ");
System.out.println(_tvo.getEmail() + " ");
System.out.println(_tvo.getHp() + " ");
System.out.println(_tvo.getAddr());
}
}
}
결과 >
TestMember_5.testMember() 함수 >>> :
testMember() >>> : tvo a.b.c.ch6.TestMemberVO@15db9742
tvo.getName() >>> : 홍길동
tvo.getemail() >>> : abcfje@naver.com
tvo.gethp() >>> : 010-1234-5678
tvo.getaddr() >>> : 서울시 강남구
testMember() >>> : aList []
testMember() >>> : aList [a.b.c.ch6.TestMemberVO@15db9742]
TestMember_5.main() for 문 >>> :
main() >>> : aList [a.b.c.ch6.TestMemberVO@15db9742]
main() >>> : _tvo a.b.c.ch6.TestMemberVO@15db9742
홍길동
abcfje@naver.com
010-1234-5678
서울시 강남구
예제) TestMemberVO를 호출하여 출력
package a.b.c.ch6;
import java.util.ArrayList;
public class TestMember_6 {
// selectMember 함수에 자료형이 TestMemberVO인 매개변수 aList
public void selectMember(ArrayList<TestMemberVO> aList) {
System.out.println("TestMember_6.testMember() 함수 >>> : \n");
for(int i = 0; i< aList.size(); i++)
{
TestMemberVO tvo = aList.get(i);
System.out.println(tvo.getName() + ",");
System.out.println(tvo.getEmail() + ",");
System.out.println(tvo.getHp() + ",");
System.out.println(tvo.getAddr());
}
}
public static void main(String[] args) {
// 지역변수 초기화
String name = "홍길동";
String email = "abcfje@naver.com";
String hp = "010-1234-5678";
String addr = "서울시 강남구";
ArrayList<TestMemberVO> aList = new ArrayList<TestMemberVO>();
for(int i = 0; i<10;i++) {
TestMemberVO tvo = new TestMemberVO();
tvo.setName(name + i);
tvo.setEmail(email + i);
tvo.setHp(hp + i);
tvo.setAddr(addr + i);
aList.add(tvo);
}
TestMember_6 tm_6 = new TestMember_6();
tm_6.selectMember(aList);
}
}
결과>
TestMember_6.testMember() 함수 >>> :
홍길동0,
abcfje@naver.com0,
010-1234-56780,
서울시 강남구0
홍길동1,
abcfje@naver.com1,
010-1234-56781,
서울시 강남구1
홍길동2,
abcfje@naver.com2,
010-1234-56782,
서울시 강남구2
...
홍길동8,
abcfje@naver.com8,
010-1234-56788,
서울시 강남구8
홍길동9,
abcfje@naver.com9,
010-1234-56789,
서울시 강남구9
자료구조(data Structure) 정리
Array(배열) | ArrayList(리스트) |
객체 | 객체 |
Index | Index |
Data type동일해야함 | Data type 동일하지 않아도 됨 -> 대신 출력할때는 형변환 해야함 - <제너릭> 사용 |
길이제한 있음(<length()) | 길이제한 없음(기본 10) |
'JAVA > 강의노트' 카테고리의 다른 글
JAVA 19일차. 예외처리, 호출, String 클래스의 메소드(indexOf, substring, split, replace, contains) (4) | 2022.09.14 |
---|---|
JAVA 18일차.HashMap, 정렬, 예외처리 (2) | 2022.09.12 |
JAVA 16일차. 추상클래스, this(), 정보은닉 (9) | 2022.08.24 |
JAVA 15일차. 상속과 인터페이스 (11) | 2022.08.22 |
JAVA 14일차. 복습 및 문제풀어보기 (12) | 2022.08.21 |