# Generic : 포괄적인
[ex] 제너릭클래스를 선언하세요.
class A<T>{
T t;
void setValue(T t){ this.t=t; }
T getValue(){ return t; }
}
class B{
public static void main(String args[]){
A<String> o1=new A<String>();
A<Integer> o2=new A<Integer>();
o1.setValue("abc");
o2.setValue(100);
System.out.println(o1.getValue()); // abc
System.out.println(o2.getValue()); // 100
}
}
# Collection : 자료구조 - 데이터 저장하는 방식
🌸 java.util.Set ( 주머니 ) : 순서 없다❌ 중복된 데이터 허용안됨❌ - HashSet
java.util.List ( 배열 ) : 순서 있다⭕ 중복된 데이터 허용⭕ - ArrayList
java.util.Map ( 사전 ) : 키, 값 한쌍으로 저장 가능⭕ 키 중복될 수 없다❌ - HashMap
# Set
🌸 순서 없다.
중복된 데이터 허용되지 않는다.
구현클래스 HashSet 있다.
메서드 add, iterator 있다.
💡인터페이스, 객체 생성되지X
[ex]
import java.util.*;
class A{
public static void main(String args[]){
Set<Integer> set=new HashSet<Integer>();
set.add(10);
set.add(10);
set.add(10);
System.out.println(set);
}
} //10
[ex]
import java.util.*;
class A{
public static void main(String args[]){
Set<Integer> set=new HashSet<Integer>();
set.add(10);
set.add(20);
set.add(30);
System.out.println(set);
}
} //20, 10, 30
[ex] 컬렉션의 크기 얻기
import java.util.*;
class A{
public static void main(String args[]){
Set<Integer> set=new HashSet<Integer>();
set.add(10);
set.add(20);
set.add(30);
System.out.println(set.size());
}
} //3
[ex]
class A{
public static void main(String args[]){
int[] a=new int[3];
a[3]=100; // ArrayIndexOutOfBoundsException
}
}
# List
🌸 순서 있다.
중복된 데이터 허용된다.
구현 클래스 ArrayList가 있다.
메서드 add, get, remove있다.
[ex]
import java.util.*;
class A{
public static void main(String args[]){
List<Integer> list=new ArrayList<Integer>();
list.add(10);
list.add(10);
list.add(10);
System.out.println(list);
}
} // [10, 10, 10]
[ex]
import java.util.*;
class Member{}
class A{
public static void main(String args[]){
List<Member> list=new ArrayList<Member>();
list.add(new Member());
list.add(new Member());
System.out.println(list.size()); // 2
}
}
💡DAO(Data Access Object)
- Database의 Data에 접근하기 위한 객체
- select, insert, update, delete메서드 가지고 있음
💡DTO(Data Transfer Object)
- 계층간 데이터 교환을 위한 Javabeans
💡VO(Value Object)
- 값 오브젝트로써 값을 위해 쓰임
[ex]
import java.sql.*;
class MemberVO{ // 자바빈즈 bean
String id,pw,addr,tel; //이 멤버변수의 초기값 null
void setId(String id){ this.id=id; } //세터 메서드, 외부에서 받아온 것 멤벼변수에 세팅
void setPw(){}
String getId(){ return id; }
}
class DBUtil{
static Connection getConnection() throws Exception{
Class.forName("oracle.jdbc.OracleDriver");
String url="jdbc:oracle:thin:@//127.0.0.1:1521/xe";
Connection conn=DriverManager.getConnection(url,"scott","tiger");
return conn;
}
}
interface MemberDAO{
List<MemberTO> selectMemberList(); //select * from member 회원 여러명
MemberTO selectMember(String id); //회원 1명 조회, select * from member where id=?
void insertMember(MemberTO to); //insert into member values(?,?,?,?) / pstmt.setString(1,to.getId());
void updateMember(MemberTO to);
void deleteMember(String id);
}
class MemberDAOImpl implements MemberDAO{ //인터페이스를 구현하는 객체만들기
public List<MemberVO> selectMemberList(){
try{
Connection conn=DBUtil.getConnection();
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select empno, ename from emp");
List<MemberVO> list=new ArrayList<MemberVO>(); //while문 생성 전에 객체 생성해서, 리스트에 집어 넣음
while(rs.next()){ //while문으로 세팅
MemberVO vo=new MemberVO(); //회원 만들기
vo.setId(rs.getString("id")); //멤버변수 값 null인 상태에서 DB에서 id가져온 것을 집어넣음
....
list.add(vo); //while문으로 세팅 후 list로 집어넣음
}
return list;
}catch(){
}finally{
자원회수 //DAO는 메서드 마다 자원회수 해야함. 사용자 화면에 결과를 내고 connection 끊어야하기 때문
}
}
}
class A{
public static void main(String args[]) throws Exception{
MemberDAO dao=MemberDAOImpl.getInstance();
//싱글톤패턴, **멤버DAO는 테이블 1개당 1개 나옴, 객체가 1개만 나오면 된다**
//dao는 다형적변수
//메인에서 dao라고 하는 이유는 DAO는 인터페이스 이기 때문에 DAO에 있는 것만 호출하기 위해
List<MemberTO> list=dao.selectMemberList();
}
}
# Map
🌸 key와 value라는 한쌍의 정보를 저장한다.
key는 중복될 수 없다.
구현클래스 HashMap 있다.
메서드 put, get, keySet, containsKey있다.
[ex]
import java.util.*;
class A{
public static void main(String args[]) throws Exception{
Map<String,Integer> map=new HashMap<>();
map.put("aa",100);
map.put("aa",100);
map.put("bb",100);
System.out.println(map);
}
} //{aa=100, bb=100}
[ex] Map을 객체생성하세요.
import java.util.*;
class Guest {
String name;
Guest(String s) {name = s;}
}
class A{
public static void main(String args[]) throws Exception{
List<Guest> list1=new ArrayList<>(); //ArrayList는 객체생성해서 리스트만들기
list1.add(new Guest("홍"));
list1.add(new Guest("박"));
List<Guest> list2=Arrays.asList( //Arrays.asList는 adList메서드로 리스트 만들기
new Guest("이"),new Guest("김"),new Guest("강")
);
//here
map.put("허브티",list1);
map.put("아메리카노",list2);
}
}
[an] Map< String, List<Guest>> map=new HashMap<>();
💡set은 특정한 요소에 접근 불가능, 확장for문으로 접근해야함.
[ex] Map의 get메서드를 이용해서 200을 출력하세요.
import java.util.*;
class A{
public static void main(String args[]) throws Exception{
Map<String,Integer> map=new HashMap<>();
map.put("aa",100);
map.put("bb",200);
map.put("cc",300);
//here
}
}
[an]
import java.util.*;
class A{
public static void main(String args[]) throws Exception{
Map<String,Integer> map=new HashMap<>();
map.put("aa",100);
map.put("bb",200);
map.put("cc",300);
int n=map.get("bb");
System.out.println(n);
}
} //200
[ex] 아래와 같이 실행되려면?
[exec] java A 아메리카노
3명
[exec] java A 민트차
1명
import java.util.*;
class A{
public static void main(String args[]) throws Exception{
List<Guest> list1=new ArrayList<>();
list.add(new Guest("홍"));
list.add(new Guest("박"));
List<Guest> list2=Arrays.asList(
new Guest("이"),new Guest("김"),new Guest("강")
);
List<Guest> list3=Arrays.asList( new Guest("송") );
Map<String,List<Guest>> map=new HashMap<>();
map.put("허브티",list1);
map.put("아메리카노",list2);
map.put("민트차",list3);
//here
}
}
[an]
import java.util.*;
class Guest {
String name;
Guest(String s) {name = s;}
}
class A{
public static void main(String args[]) throws Exception{
List<Guest> list1=new ArrayList<>();
list.add(new Guest("홍"));
list.add(new Guest("박"));
List<Guest> list2=Arrays.asList(
new Guest("이"),new Guest("김"),new Guest("강")
);
List<Guest> list3=Arrays.asList( new Guest("송") );
Map<String,List<Guest>> map=new HashMap<>();
map.put("허브티",list1);
map.put("아메리카노",list2);
map.put("민트차",list3);
List<Guest> list=map.get(args[0]);
System.out.println(list.size()+"명");
}
}
[ex] 위 소스코드에서 아래와 같이 실행되려면?
단, Map의 containsKey메서드를 이용합니다.
[exec] java A 아메리카노
3명
[exec] java A 라떼
개설되지 않은 방입니다.
[an]
import java.util.*;
class Guest {
String name;
Guest(String s) {name = s;}
}
class A{
public static void main(String args[]) throws Exception{
List<Guest> list1=new ArrayList<>();
list1.add(new Guest("홍"));
list1.add(new Guest("박"));
List<Guest> list2=Arrays.asList(
new Guest("이"),new Guest("김"),new Guest("강")
);
List<Guest> list3=Arrays.asList( new Guest("송") );
Map<String,List<Guest>> map=new HashMap<>();
map.put("허브티",list1);
map.put("아메리카노",list2);
map.put("민트차",list3);
if(! map.containsKey(args[0]) ){
System.out.println("개설되지 않은 방입니다.");
return;
}
List<Guest> list=map.get(args[0]);
System.out.println(list.size()+"명");
}
}
[ex] Map의 keySet메서드 호출문장을 작성하세요.
import java.util.*;
class A{
public static void main(String args[]) throws Exception{
Map<String,Integer> map=new HashMap<>();
map.put("aa",100);
map.put("bb",200);
map.put("cc",300);
//here
}
}
[an] Set<String> set=map.keySet();
[ex] 확장for문
for( 자료형 변수 : 배열 ){ 반복문장 }
for( 자료형 변수 : java.util.Collection ){ 반복문장 }
import java.util.*;
class A{
public static void main(String args[]){
Map<String,Integer> map=new HashMap<>();
map.put("aa",100);
map.put("bb",200);
map.put("cc",300);
for( String str : map.keySet() ) System.out.println(str);
}
} //aa bb cc
[ex]
class Guest{
String name;
Guest(String name){ this.name=name; }
}
class A{
public static void main(String args[]){
List<Guest> list=Arrays.asList(
new Guest("이"),new Guest("김"),new Guest("강")
);
for(Guest guest : list) System.out.println(guest.name);
}
}
'Java' 카테고리의 다른 글
[Java]DB연동 (0) | 2022.06.22 |
---|---|
[Java]Exception (0) | 2022.06.22 |
[Java]반환형 있는 메서드 선언, 호출 (1) | 2022.06.10 |
[Java]반환형 없는 메서드 선언과 호출 (0) | 2022.06.10 |
[Java]CRUD 상품 리스트 기능 구현 (1) | 2022.05.28 |