Perspective를 Java로 변경
package collection;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
public class ListTest01 {
public static void main(String[] args) {
/*
[ List<E>(interface) ]
- implements Collection<E>(interface)
- 데이터 저장 시 : 순서를 유지(인덱스 번호 有) / 중복 허용 / 무한 저장 가능
- 데이터 타입을 구분하지 않는다
- 데이터를 타입을 구분하기 위해, '그때그때마다 Casting'을 하거나 'Generic으로 표현(내가 원하는 시점에 데이터 타입을 일괄 적용)'한다
*/
// ArrayList
List<Member> list = new ArrayList<>();
// Vector( 멀티스레드에서 안전하게 처리하기 위해, synchronized 메서드로 구성 )
// List<Member> list = new Vector<>();
// 세터(setter) 메서드를 활용하여, Member 객체에 데이터 '저장'
Member mem = new Member();
mem.setNo(1);
mem.setEmail("이메일1");
mem.setPass("1111");
mem.setNick_name("별명1");
mem.setCreated_date(new Timestamp(System.currentTimeMillis()));
// Member 객체에 '저장'된 데이터를, list에 데이터 <삽입>
list.add(mem); // 0번 인덱스에 <삽입>
// 세터(setter) 메서드를 활용하여, Member 객체에 데이터 '저장'
mem = new Member();
mem.setNo(2);
mem.setEmail("이메일2");
mem.setPass("2222");
mem.setNick_name("별명2");
mem.setCreated_date(new Timestamp(System.currentTimeMillis()));
// Member 객체에 '저장'된 데이터를, list에 데이터 <삽입>
list.add(mem); // 1번 인덱스에 <삽입>
// 세터(setter) 메서드를 활용하여, Member 객체에 데이터 '저장'
mem = new Member();
mem.setNo(3);
mem.setEmail("이메일3");
mem.setPass("3333");
mem.setNick_name("별명3");
mem.setCreated_date(new Timestamp(System.currentTimeMillis()));
// Member 객체에 '저장'된 데이터를, list에 데이터 <추가>
list.add(1, mem); // 1번 인덱스에 <추가> -> 원래 있던 데이터들의 인덱스가 한 칸씩 뒤로 밀림
// 세터(setter) 메서드를 활용하여, Member 객체에 데이터 '저장'
mem = new Member();
mem.setNo(4);
mem.setEmail("이메일4");
mem.setPass("4444");
mem.setNick_name("별명4");
mem.setCreated_date(new Timestamp(System.currentTimeMillis()));
// Member 객체에 '저장'된 데이터로, list 데이터를 <수정>
list.set(1, mem); // 1번 인덱스를 <수정>
// 게터(getter) 메서드 및 [ for(구성요소를 저장 가능한 변수 선언 : 컬렉션) ]를 활용하여, list의 데이터를 출력
for(Member m : list) {
System.out.print(m.getNo() + " : ");
System.out.print(m.getEmail() + " : ");
System.out.print(m.getPass() + " : ");
System.out.print(m.getNick_name() + " : ");
System.out.println(m.getCreated_date());
}
System.out.println("------------------------------------");
// 게터(getter) 메서드를 활용하여, list에 있는 첫번째 데이터(인덱스 번호 : 0)만 출력
Member m1 = list.get(0);
System.out.print(m1.getNo() + " : ");
System.out.print(m1.getEmail() + " : ");
System.out.print(m1.getPass() + " : ");
System.out.print(m1.getNick_name() + " : ");
System.out.println(m1.getCreated_date());
}
}
package collection;
import java.sql.Timestamp;
public class Member { // 모든 종류의 데이터(no, email, pass, nick_name, created_date)를 관리
// 보안을 위해, 멤버 필드를 Encapsulation(private으로 설정) <= 우회해서 접근하기 위해, 게터(getter)와 세터(setter) 메서드를 활용한다
private int no;
private String email;
private String pass;
private String nick_name;
private Timestamp created_date;
// 게터(getter) 메서드 : [ private 전역변수(파란색) ]를 읽어 들일 때 사용 -> 즉, [ private 전역변수(파란색) ]를 return 함
// 세터(setter) 메서드 : 외부에서 데이터를 받아와서 이를 [ 매개변수(갈색) ]에 저장. 그 후에, 이를 [ private 전역 변수(파란색) ]에 저장. 이 때, return 값이 없기 때문에 void로 설정
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
/*
ex) setNo(10)
: 정수 10을 [ () 안의 매개변수 - int no(갈색) ]에 저장 -> [ () 안의 매개변수 - int no(갈색) ]에 저장된 정수 10을 [ private 전역 변수(파란색) - private int no ]에 저장
*/
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getNick_name() {
return nick_name;
}
public void setNick_name(String nick_name) {
this.nick_name = nick_name;
}
public Timestamp getCreated_date() {
return created_date;
}
public void setCreated_date(Timestamp created_date) {
this.created_date = created_date;
}
}
package collection;
public class MemberInsertDTO { // 회원가입 시 필요한 데이터(email, pass)만 개별적으로 관리
// DTO(Data Transfer Object) : 개별적인 데이터를 전송하는 모델
private String email;
private String pass;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}