Yuni Devlog

# 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
profile

Yuni Devlog

@siyuning

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그