(15)-23.10.13[JAVA]

DANA·2023년 10월 13일

KDT-구디아카데미

목록 보기
15/56

List collection

<예제1>
package com.step5;

import java.util.ArrayList;

public class List1 {

	public static void main(String[] args) {
		ArrayList fruits = new ArrayList();
		fruits.add("🍓");
		fruits.add(1,"🍉");
		fruits.add(1,"🍎");
		
		System.out.println(fruits.get(0));

		for(int i=0;i<fruits.size();i++) {
			System.out.println(fruits.get(i));//
		}
	}
}

치환 연습

<예제1-2>
package com.step5;

import java.util.ArrayList;

public class List1 {

	public static void main(String[] args) {
		String s1 = null;
		String s2 = null;
		String s3 = null;
		ArrayList fruits = new ArrayList();
		boolean isOk = fruits.add("🍍");
		System.out.println(isOk);
		fruits.add("🍓");
		s1 = (String)fruits.get(0);
		fruits.add(1,"🍉");
		s2 = (String)fruits.get(1);
		fruits.add(1,"🍎");
		s3 = (String)fruits.get(2);

		for(int i=0;i<fruits.size();i++) {
			System.out.println(fruits.get(i));//
		}
		System.out.println(s1+","+s2+","+s3);
	}
}

Remove

<예제1-3>
package com.step5;

import java.util.ArrayList;

public class List2 {

	public static void main(String[] args) {
		ArrayList<String> fruits = new ArrayList<String>(); // 제네릭 추가
		fruits.add("🍉");
		fruits.add(1,"🍎");
		fruits.add(1,"🍓");
		String r1=(String)fruits.remove(1);
		System.out.println(fruits);
		System.out.println(r1);
	}
}
<예제2-1>
package com.step5;

import java.util.ArrayList;

public class List3 {
	void getFruitList(ArrayList<String> fruits) {
		for(int i=0;i<fruits.size();i++) {
			System.out.println(fruits.get(i));
		}
	}
	ArrayList<String> methodA(){
		return null;
	}
	public static void main(String[] args) {
		ArrayList<String> fruits = new ArrayList<String>();
		fruits.add("🍉");
		fruits.add(1,"🍎");
		fruits.add(1,"🍓");
		List3 li=new List3();
		li.getFruitList(fruits);// 참조에 의한 호출(call by reference)

	}

}
<예제2-2>
package com.step5;

import java.util.ArrayList;

public class List3 {
	void getFruitList(ArrayList<String> fruits) {
		for(int i=0;i<fruits.size();i++) {
			System.out.println(fruits.get(i));
		}
	}
	ArrayList<String> methodA(){
		ArrayList<String> fruits = new ArrayList<String>();
		fruits.add("🍉");
		fruits.add(1,"🍎");
		fruits.add(1,"🍓");
		return fruits;
	}
	public static void main(String[] args) {
		List3 li=new List3();
		ArrayList<String> fruits = li.methodA();
		System.out.println(fruits);
	}

}
<예제3>
package com.step5;

import java.util.ArrayList;
import java.util.List;

public class List4 {
	List<DeptDTO> li = new ArrayList<>(); // 선언부와 생성부 이름 다른 다형성 내용(확장성, 유지보수 할 때 코드 수정 양을 줄여준다)
	public static void main(String[] args) {
		List4 l4=new List4();
		
		DeptDTO dept = new DeptDTO();
		dept.setDeptno(10);
		dept.setDname("영업부");
		dept.setLoc("부산");
		l4.li.add(dept);
		
		dept = new DeptDTO();
		dept.setDeptno(10);
		dept.setDname("개발부");
		dept.setLoc("대전");
		l4.li.add(dept);
		
		System.out.println(l4.li);
		DeptDTO rd = l4.li.get(0);
		System.out.println(rd.getDeptno()+","+rd.getDname()+","+rd.getLoc());
		rd = l4.li.get(1);
		System.out.println(rd.getDeptno()+","+rd.getDname()+","+rd.getLoc());
	}
}
<예제4-EmpDTO>
package com.step5;

public class EmpDTO {
	private int empno    =0;// 
	private String ename    =null;// 
	private String job      = null;//
	private int mgr      =0;//
	private String hiredate = null;// 
	private int sal      =0;//
	private int comm     =0;// 
	private int deptno   =0;// 
	public EmpDTO() {}
	public EmpDTO(int empno, String ename, String job, int mgr
			                 ,  String hiredate, int sal, int comm, int deptno) {
		this.empno = empno;
		this.ename = ename;
		this.job = job;
		this.mgr = mgr;
		this.hiredate = hiredate;
		this.sal = sal;
		this.comm = comm;
		this.deptno = deptno;
	}
	public int getEmpno() {
		return empno;
	}
	public void setEmpno(int empno) {
		this.empno = empno;
	}
	public String getEname() {
		return ename;
	}
	public void setEname(String ename) {
		this.ename = ename;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public int getMgr() {
		return mgr;
	}
	public void setMgr(int mgr) {
		this.mgr = mgr;
	}
	public String getHiredate() {
		return hiredate;
	}
	public void setHiredate(String hiredate) {
		this.hiredate = hiredate;
	}
	public int getSal() {
		return sal;
	}
	public void setSal(int sal) {
		this.sal = sal;
	}
	public int getComm() {
		return comm;
	}
	public void setComm(int comm) {
		this.comm = comm;
	}
	public int getDeptno() {
		return deptno;
	}
	public void setDeptno(int deptno) {
		this.deptno = deptno;
	}
}
<예제4-EmpManager>
package com.step5;

import java.util.ArrayList;

public class EmpManager {
	ArrayList<EmpDTO> empList = new ArrayList<>(); // 아무것도 없다. size() = 0이다. 빈 방
																						// EmpDTO 가 비어있다. ArrayList 안에 EmpDTO를 추가해줘야 한다.
	void getEmpList() {
		System.out.println(empList.size());  // 0 
//		EmpDTO emp = new EmpDTO(); // 0이 5개, null이 3개 들어가 있음. (EmpDTO클래스에서 확인)
		EmpDTO emp = new EmpDTO(7566, "나신입", "영업", 7500, "2000-10-20", 3000, 500, 10);
		empList.add(0,emp);  // 0번째에 들어감.
		emp = new EmpDTO();
		empList.add(1,emp);  // 1번째에 들어감.
		System.out.println(empList.size()); 
		for(int i=0; i<empList.size(); i++) {
			EmpDTO remp = empList.get(i);
			System.out.println(remp.getEmpno()+", "+remp.getEname()+", "+remp.getHiredate());
		}
		
	}
	public static void main(String[] args) {
		// 자기 신을 인스턴스화 해야만 전역변수가 인식된다.
		EmpManager em = new EmpManager();
		em.getEmpList();
		
	}

}
<예제4-DeptDTO>
package com.step5;

public class DeptDTO {
	private int deptno;
	private String dname;
	private String loc;
	public DeptDTO() {}
	// 생성자의 파라미터 자리를 통해서 전역변수의 초기화(재정의) 한다.
	public DeptDTO(int deptno, String dname, String loc) {
		this.deptno = deptno;
		this.dname = dname;
		this.loc = loc;
	}
	private EmpDTO empDto;
	
	public int getDeptno() {
		return deptno;
	}

	public void setDeptno(int deptno) {
		this.deptno = deptno;
	}

	public String getDname() {
		return dname;
	}

	public void setDname(String dname) {
		this.dname = dname;
	}

	public String getLoc() {
		return loc;
	}

	public void setLoc(String loc) {
		this.loc = loc;
	}

	public EmpDTO getEmpDto() {
		return empDto;
	}

	public void setEmpDto(EmpDTO empDto) {
		this.empDto = empDto;
	}

	public static void main(String[] args) {
	}

}
<예제4-DeptManager>
package com.step5;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
// ActionListener al = new DeptManager();
// 자바는 단일 상속만 가능하다. - 다중상속은 발가함 - 다중상속의 단점을 보완하기 위해 인터페이스가 제공된다.
// 단 인터페이스는 여러개를 implements할 수 있다. (추상클래스, 인터페이스는 설계관점에서 중요하다.)
public class DeptManager extends JFrame implements ActionListener{
	// 선언부
	List<DeptDTO> deptList = new ArrayList<>(); // 왜 전역변수로 하는가? 입력|수정|삭제|조회 유지되어야 하기 때문에
	String header[] = {"부서번호", "부서명", "지역"};
	String datas[][] = new String[3][3]; // 2차배열  - 대괄호가 2쌍이 필요하다.
	// 생성자의 파라미터를 통해서 서로 다른 클래스가 의존관계를 맺고 하나의 기능을 서비스 할 수 있다.
	// 생성자도 파라미터를 여러개 가질 수 있다. - 메소드오버로딩
	DefaultTableModel dtm_dept = new DefaultTableModel(datas, header); // <table> - 양식 > 자바가 있어야 DataSet 구성함
	JTable jt_dept = new JTable(dtm_dept);
	JScrollPane jsp_dept = new JScrollPane(jt_dept); // JScrollPane 위에 JTable위에 DefaultTableModel 넣음
	JPanel jp_north = new JPanel();
	JButton jbtnSelect = new JButton("조회");
	JButton jbtnDelete = new JButton("삭제");
	JButton jbtnAdd = new JButton("행 추가");
	JButton jbtnDel = new JButton("행 삭제");
	JButton jbtnExit = new JButton("종료");
	// 생성자
	DeptManager(){
		getDeptList();
		initDisplay();
	} //////////// end of DeptManager /////////////
	public List<DeptDTO> getDeptList(){
		DeptDTO dept = new DeptDTO(10, "영업부", "부산");
		deptList.add(dept);
		dept = new DeptDTO(20,"개발부","대전");
		deptList.add(dept);
		dept = new DeptDTO(30,"운영부","인천");
		deptList.add(dept);
		return deptList;
	}
	// 화면 처리부
	public void initDisplay() {
		jbtnSelect.addActionListener(this);
		jbtnDelete.addActionListener(this);
		jbtnAdd.addActionListener(this); // 행추가
		jbtnDel.addActionListener(this); // 행삭제
		jp_north.setLayout(new FlowLayout(FlowLayout.LEFT)); 
		jp_north.add(jbtnSelect);
		jp_north.add(jbtnDelete);
		jp_north.add(jbtnAdd); // 행추가 JPanel 붙이기
		jp_north.add(jbtnDel);
		jp_north.add(jbtnExit);
		this.add("North", jp_north);
		this.add("Center", jsp_dept);
		this.setSize(500,400); // this -> 나 자신 -> DeptManager 
		this.setVisible(true);
	}  /////////////// end of intiDisplay ////////////////
	//메인 메소드
	public static void main(String[] args) {
		JFrame.setDefaultLookAndFeelDecorated(true);
		DeptManager dm = new DeptManager(); // 상속받고있는 부모클래스 new JFrame()도 같이 호출되는 것이다.
	} /////////////// end of main /////////////////
	@Override
	public void actionPerformed(ActionEvent e) {
		System.out.println("actionPerformed 호출은 반드시 addActionListener가 있어야 한다.");
		Object obj = e.getSource(); // 버튼을 눌렀을 때 감지
		// 행 삭제 해보기
		if(obj == jbtnDel) { // 행 추가, 삭제는 데이터를 건드는 게 아니라 UI를 추가, 삭제하는 것
			dtm_dept.removeRow(0);
		}
		
		// 행 추가 해보기
		else if(obj == jbtnAdd) {
			// Vector addRow = new Vector();
			Object addRow2[] = new Object[3];
			dtm_dept.addRow(addRow2);
		}
		// 너 삭제할거니?
		else if(obj == jbtnDelete) {
			int index = jt_dept.getSelectedRow(); // 사용자가 선택한 로우의 index값을 반환함
			if(index<0) { // -1 반환(EOF)
				JOptionPane.showMessageDialog(this,"삭제할 데이터를 선택하시오.","info",JOptionPane.INFORMATION_MESSAGE);
				return; // 메소드 탈출
			}
			// 여기로 못오게 함
			else {
				System.out.println(index); // index 값을 add(int, E) 1 remove(1),
				DeptDTO rdept=deptList.remove(index);
				System.out.println(rdept+",rdept.getDeptno():"+rdept.getDeptno());
				if(rdept != null) {
					JOptionPane.showMessageDialog(this,"삭제 성공하였습니다.","info", JOptionPane.INFORMATION_MESSAGE);
					refreshData();
				} else {
					JOptionPane.showMessageDialog(this,"삭제 실패하였습니다.","info", JOptionPane.ERROR_MESSAGE);
					return;
				}
			}
		}
		// 너 조회버튼 누른거야?
		else if(obj == jbtnSelect) {
			// 웹 개발이더라도 html이 데이터를 쥘 수는 없다.
			// html과 자바코드를 섞어쓰기가 가능한가?? - 불가능 -jsp공부 -> 자바자료구조를 JSON형식으로 넘기기
			// dtm_dept는 실제 데이터를 포용함
			// JTable은 클릭이벤트 같은 것은 가능함 - 실제 데이터를 쥐고있지는 못함.
			// getRowCount는 실제 데이터의 로우 수를 반환 - 현재 3건
			while(dtm_dept.getRowCount()>0) { // dtm은 데이터셋(자바측)받는 클래스에 ~~~~~~~~~~~
				dtm_dept.removeRow(0); // 0번째 로우를 지우는 이유는 로우가 삭제될 때 마다 ~~~~~~~~~~~~
			}
			for(int i=0; i < deptList.size(); i++) {
				DeptDTO rdept = deptList.get(i);
				Vector<Object> v = new Vector<>();
				v.add(0,rdept.getDeptno());
				v.add(1,rdept.getDname());
				v.add(2,rdept.getLoc());
				dtm_dept.addRow(v); // 파라미터자리에 Vector를 사용해야하는 addRow를 불러왔기 때문에 인스턴스화 후 v 넣기.
			}
		}/////////// end of if /////////////
	} ////////////////// end of actionPerformed ///////////////////
	// 새로고침(f5) 구현하기
	public void refreshData() {
		while(dtm_dept.getRowCount()>0) { // dtm은 데이터셋(자바측)받는 클래스에 ~~~~~~~~~~~
			dtm_dept.removeRow(0); // 0번째 로우를 지우는 이유는 로우가 삭제될 때 마다 ~~~~~~~~~~~~
		}
		for(int i=0; i < deptList.size(); i++) {
			DeptDTO rdept = deptList.get(i);
			Vector<Object> v = new Vector<>();
			v.add(0,rdept.getDeptno());
			v.add(1,rdept.getDname());
			v.add(2,rdept.getLoc());
			dtm_dept.addRow(v); // 파라미터자리에 Vector를 사용해야하는 addRow를 불러왔기 때문에 인스턴스화 후 v 넣기.
		}
	}
} 
<예제5>
package com.step5;

public class Array3 {

	public static void main(String[] args) {
		int is[] = new int[3];
		System.out.println(is[1]); //0
		for(int i=0;i<is.length;i++) { // <= 가 아닌 <로 해줘야 한다
			System.out.println(is[i]);
		}
	}
}

map

<예제1>
package com.step5;

import java.util.HashMap;
import java.util.Map;

public class MapTest1 {

	public static void main(String[] args) {
		// 선언부와 생성부의 타입을 다르게 인스턴스화 하기 - 다형성
		// 선언부에 뭐가 올 수 있지? - 추상클래스 or 인터페이스 or 구현체 클래스
		// Hashtable(멀티스레드 안전), HashMap(싱글안전)
		// List보다 속도 빠름 - milisec - 순서가 없다. 2차 가공이 필요없다
		Map<String, Object> map = new HashMap<>();
		map.put("deptno", "10");
		map.put("dname", "영업부");
		map.put("loc", "부산");
		System.out.println(map.get(10));
		System.out.println(map.containsKey(10)); // false
		System.out.println(map.containsKey("deptno")); // true
		System.out.println(map.containsKey("Deptno")); // false - 대문자여서
		System.out.println(map.containsKey("deptno1111")); // false - 숫자가 붙어서. 저런 키가 없어서
		if(map.containsKey(10)) {
			System.out.println("키가 있어요");
		}
		else {
			System.out.println("키가 있어요");
		}
	}
}
<예제2>
package com.step5;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapTest2 {

	public static void main(String[] args) {
		Map<String, String> map = new HashMap<>();
		map.put("deptno", "10");
		map.put("dname", "영업부");
		map.put("loc", "부산");
		Set<String> set = map.keySet();
		Object keys[] = set.toArray();
		for(int i=0;i<keys.length;i++) {
			System.out.println(keys[i]+"===>"+map.get(keys[i]));
		}
	}
}
<예제3>
package com.step5;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class MapTest3 {

	public static void main(String[] args) {
		List<Map<String, Object>> deptList = new ArrayList<>();
		Map<String,Object> map = new HashMap<>();
		map.put("DEPTNO", 10);
		map.put("DNAME", "영업부");
		map.put("LOC", "부산");
		deptList.add(map);
		Set<String> set = map.keySet();
		Object keys[] = set.toArray();
		for(int i=0;i<keys.length;i++) {
			System.out.println(keys[i]+"===>"+map.get(keys[i]));
		}
		System.out.println(deptList.get(0).get("DEPTNO"));
		System.out.println(deptList.get(0).get("dname")); // null - 소문자여서
		System.out.println(deptList.get(0).get("LOC"));
	}
}
<예제4>
package com.step5;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class MapTest4 {

	public static void main(String[] args) {
		List<Map<String, Object>> deptList = new ArrayList<>();
		Map<String,Object> map = new HashMap<>();
		map.put("DEPTNO", 10);
		map.put("DNAME", "영업부");
		deptList.add(map);
		map = null; // 끊김
		map = new HashMap<>(); // 이렇게 하면 다시 연결돼서 부산이 보일까? 아님. 복사본이기 때문
		map.put("LOC", "부산");
		// 부산도 담으려면 어떻게 해야할까?
		deptList.add(map);
		map = new HashMap<>();
		map.put("DEPTNO", 20);
		map.put("DNAME", "개발부");
		map.put("LOC", "대구");
		deptList.add(map);
		System.out.println(deptList);
	}
}
<예제5>
package com.step5;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class DeptManager2 extends JFrame implements ActionListener{
	// 선언부
	List<Map<String, Object>> deptList = new ArrayList<>(); 
	String header[] = {"부서번호", "부서명", "지역"};
	String datas[][] = new String[0][0];
	
	DefaultTableModel dtm_dept = new DefaultTableModel(datas, header); 
	JTable jt_dept = new JTable(dtm_dept);
	JScrollPane jsp_dept = new JScrollPane(jt_dept); 
	JPanel jp_north = new JPanel();
	JButton jbtnSelect = new JButton("조회");
	JButton jbtnDelete = new JButton("삭제");
	JButton jbtnAdd = new JButton("행 추가");
	JButton jbtnDel = new JButton("행 삭제");
	JButton jbtnExit = new JButton("종료");
	// 생성자
	DeptManager2(){
		getDeptList();
		initDisplay();
	} //////////// end of DeptManager /////////////
	public List<Map<String,Object>> getDeptList(){
		Map<String,Object> map = new HashMap<>();
		map.put("DEPTNO", 10);
		map.put("DNAME", "영업부");
		map.put("LOC", "부산");
		deptList.add(map);
		map = new HashMap<>(); 
		map.put("DEPTNO", 20);
		map.put("DNAME", "개발부");
		map.put("LOC", "대구");
		deptList.add(map);
		map = new HashMap<>(); 
		map.put("DEPTNO", 30);
		map.put("DNAME", "인사부");
		map.put("LOC", "서울");
		deptList.add(map);
		return deptList;
	}
	// 화면 처리부
	public void initDisplay() {
		jbtnSelect.addActionListener(this);
		jbtnDelete.addActionListener(this);
		jbtnAdd.addActionListener(this); // 행추가
		jbtnDel.addActionListener(this); // 행삭제
		jp_north.setLayout(new FlowLayout(FlowLayout.LEFT)); 
		jp_north.add(jbtnSelect);
		jp_north.add(jbtnDelete);
		jp_north.add(jbtnAdd); 
		jp_north.add(jbtnDel);
		jp_north.add(jbtnExit);
		this.add("North", jp_north);
		this.add("Center", jsp_dept);
		this.setSize(500,400); 
		this.setVisible(true);
	}  /////////////// end of intiDisplay ////////////////
	//메인 메소드
	public static void main(String[] args) {
		JFrame.setDefaultLookAndFeelDecorated(true);
		DeptManager2 dm = new DeptManager2(); 
	} /////////////// end of main /////////////////
	@Override
	public void actionPerformed(ActionEvent e) {
		System.out.println("actionPerformed 호출은 반드시 addActionListener가 있어야 한다.");
		Object obj = e.getSource(); 
		// 행 삭제 해보기
		if(obj == jbtnDel) {
			// dtm_dept.removeRow(0);
			int index = jt_dept.getSelectedRow(); // 사용자가 선택한 로우의 index값을 반환함
			if(index<0) { // -1 반환(EOF)
				JOptionPane.showMessageDialog(this,"삭제할 행을 선택하시오.","info",JOptionPane.INFORMATION_MESSAGE);
				return; // 메소드 탈출
			}
			else {
				dtm_dept.removeRow(index);
			}
		}
		
		// 행 추가 해보기
		else if(obj == jbtnAdd) {
			// Vector addRow = new Vector();
			Object addRow2[] = new Object[3];
			dtm_dept.addRow(addRow2);
		}
		// 너 삭제할거니?
		else if(obj == jbtnDelete) {
			int index = jt_dept.getSelectedRow(); // 사용자가 선택한 로우의 index값을 반환함
			if(index<0) { // -1 반환(EOF)
				JOptionPane.showMessageDialog(this,"삭제할 데이터를 선택하시오.","info",JOptionPane.INFORMATION_MESSAGE);
				return; // 메소드 탈출
			}
			// 여기로 못오게 함
			else {
				System.out.println(index); // index 값을 add(int, E) 1 remove(1),
				Map<String,Object> map =deptList.remove(index);
				System.out.println(map+",rdept.get(DEPTNO):"+map.get("DEPTNO"));
				if(map != null) {
					JOptionPane.showMessageDialog(this,"삭제 성공하였습니다.","info", JOptionPane.INFORMATION_MESSAGE);
					refreshData();
				} else {
					JOptionPane.showMessageDialog(this,"삭제 실패하였습니다.","info", JOptionPane.ERROR_MESSAGE);
					return;
				}
			}
		}
		// 너 조회버튼 누른거야?
		else if(obj == jbtnSelect) {
			while(dtm_dept.getRowCount()>0) { // dtm은 데이터셋(자바측)받는 클래스에 ~~~~~~~~~~~
				dtm_dept.removeRow(0); // 0번째 로우를 지우는 이유는 로우가 삭제될 때 마다 ~~~~~~~~~~~~
			}
			for(int i=0; i < deptList.size(); i++) {
				Map<String,Object> map = deptList.get(i);
				Vector<Object> v = new Vector<>();
				v.add(0,map.get("DEPTNO"));
				v.add(1,map.get("DNAME"));
				v.add(2,map.get("LOC"));
				dtm_dept.addRow(v); // 파라미터자리에 Vector를 사용해야하는 addRow를 불러왔기 때문에 인스턴스화 후 v 넣기.
			}
		}/////////// end of if /////////////
	} ////////////////// end of actionPerformed ///////////////////
	// 새로고침(f5) 구현하기
	public void refreshData() {
		while(dtm_dept.getRowCount()>0) { // dtm은 데이터셋(자바측)받는 클래스에 ~~~~~~~~~~~
			dtm_dept.removeRow(0); // 0번째 로우를 지우는 이유는 로우가 삭제될 때 마다 ~~~~~~~~~~~~
		}
		for(int i=0; i < deptList.size(); i++) {
			Map<String,Object> map = deptList.get(i);
			Vector<Object> v = new Vector<>();
			v.add(0,map.get("DEPTNO"));
			v.add(1,map.get("DNAME"));
			v.add(2,map.get("LOC"));
			dtm_dept.addRow(v); 
		}
	}
} 

0개의 댓글