변수-배열-객체배열-자료구조(Vector)
자료구조는 오브젝트 즉 모든 구조를 담는다.
E는 원소 elements를 뜻한다.
메소드 오버로딩의 규칙
리턴타입은 관계 없다.
접근제한자도 상관 없다.
메소드 선택에 따라서 반환값이 있을수도 있고 없을 수도있다.
Vector
출처 : https://coding-factory.tistory.com/553
Vector를 사용할때에는 타입을 명시해주는 것이 좋습니다. JDK 5.0 이후부터 자료형의 안정성을 위해 제너릭스(Generics)라는 개념이 도입되었습니다. Vector<Integer> v = new Vector<Integer>();이라고 되어있다면 int객체들만 add되어질 수 있고 다른 타입의 객체는 사용이 불가능합니다.
※제네릭스는 선언할 수 있는 타입이 객체 타입입니다. int는 기본자료형이기 때문에 들어갈 수 없으므로 int를 객체화시킨 wrapper클래스를 사용해야 합니다. Integer
Vector에 값을 추가하려면 Vector의 add(index, value) 메소드를 사용하면 됩니다. 구조는 ArrayList나 LinkedList와 같습니다. index를 생략하면 Vector의 맨 뒤에 값이 추가되며 index중간에 값을 추가하면 해당 인덱스부터 마지막 인덱스까지 모두 한 칸씩 뒤로 밀려납니다.
Vector에서 값을 삭제하려면 Vector의 remove(index) 메소드를 사용하면 됩니다. remove() 함수를 사용하여 특정 인덱스의 값을 제거하면 바로 뒤에 있는 인덱스부터 마지막 인덱스까지 모두 앞으로 한 칸씩 앞으로 당겨집니다. 모든 값을 제거하려면 clear() 메소드나 removeAllElements() 메소드를 사용하면 됩니다.
Vector의 값이 들어있는 개수를 구하려면 size() 메소드를 사용
package dev_java.ch03.table;
import java.util.Vector;
public class Vector3 {
public static void main(String[] args) {
//객체는 생성되었으나 방은 없다
Vector<Integer> v=new Vector<>();
//그러니까 0
System.out.println(v.size());//0
//방이 비어있니?
System.out.println(v.isEmpty());//true
boolean isExist=v.add(1);//벡터에 값 넣기
System.out.println(v.get(0));//값 가져오기 1
System.out.println(isExist);//true
System.out.println(v.isEmpty());//false
System.out.println(v.contains(1));//flase->true
v.add(1,2);//,앞의 칸에 두번째 숫자를 넣었다
System.out.println(v.contains(2));
System.out.println(v.remove(1));//1번째 칸의 2를 없앴다.
boolean isOk =v.remove(new Integer(1));
System.out.println(v.size());
}
}
이차배열을 벡터에 넣어주기
package dev_java.ch03.table;
import java.util.Arrays;
import java.util.Vector;
public class Vector6 {
public static void main(String[] args) {
String[][] dept={
{"부서번호","부서명","지역"},
{"10","개발부","서울"},
{"20","인사부","인천"},
{"30","총무부","부산"}
};
Vector <String[]> vdept= new Vector<>();//1차 배열을 받는 벡터
for(int i=0; i<dept.length;i++ ){
vdept.add(dept[i]);
System.out.println(Arrays.toString(dept[i]));//주소에 있는 배열 값을 불러오기
}
}
}
쌤의 답안
메소드 분리
package dev_java.ch03.table;
import java.util.Arrays;
import java.util.Vector;
public class Vector6_2 {//쌤 답안2-메소드 분리
String[][] dept={
{"부서번호","부서명","지역"},
{"10","개발부","서울"},
{"20","인사부","인천"},
{"30","총무부","부산"}
};
Vector <String[]> vdept= new Vector<>();//1차 배열을 받는 벡터
void initVector(){
for(int i=0; i<dept.length;i++ ){
vdept.add(dept[i]);//벡터에 담기는 것은 1차배열이다.-컬럼의 수는 바뀔 수 있다.
System.out.println(Arrays.toString(dept[i]));
}
}
void initVectorPtint(){
for(int i=0; i<vdept.size();i++){
String[] oneRow=vdept.get(i);
System.out.println(oneRow.toString());
for(int j=0;j<oneRow.length;j++){
System.out.print(oneRow[j]+" ");
}
System.out.print("\n");
}
}
public static void main(String[] args) {
Vector6_2 v=new Vector6_2();
v.initVector();//경유해야 값이 들어감
// v.vdept.get(0);->
// v.vdept.get(1);->
// v.vdept.get(2);->
System.out.println(v.vdept.size());//0->3
v.initVectorPtint();
}//end of mian
}
배열로 화면구현하기
package dev_java.week3;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Button1 extends JFrame{
//선언부
String jbtn_label[]={"입력","수정","삭제"};
JPanel jp_north=new JPanel();
JButton jb1=new JButton(jbtn_label[0]);
JButton jb2=new JButton(jbtn_label[1]);
JButton jb3=new JButton(jbtn_label[2]);
JButton[] jbtns=new JButton[3];
JPanel jp_south=new JPanel();
//생성자
public Button1(){
initDisplay();
}
public void initDisplay(){
for(int i=0;i<jbtn_label.length;i++){
jbtns[i] = new JButton(jbtn_label[i]);
jp_south.add(jbtns[i]);
}
jp_north.add(jb1);
jp_north.add(jb2);
jp_north.add(jb3);
this.add("North",jp_north);
this.add("South",jp_south);
this.setSize(500,400);
this.setVisible(true);
}
//메인메소드
public static void main(String[] args) {
new Button1();
}
}
벡터로 화면구현하기
12/15 숙제3번
쌤의 모범답안
public class Practice3_dap {
int counts[]=new int[10];
int[] intArray(int datas[], int size){
int i=0;
for(;i<datas.length;i++){
datas[i]=(int)(Math.random()*10);
}
dataPrint(datas);
return datas;
}
void dataPrint(int[] datas){
for(int i=0; i<datas.length;i++){
System.out.print(datas[i]);
if(i%10==9){
System.out.println("\n");
}//end of if
}//end of for
}
void bindo (int[] datas){
for(int i=0;i<datas.length;i++){
for(int j=0;j<10;j++){
if(j==datas[i]){
counts[j]=counts[j]+1;
}
}//end of inner for
}//end of outter for
for(int i=0;i<10;i++){
System.out.println(counts[i]);
}
}///end of bindo
void bindo_dap (int[] datas){
for(int i=0;i<datas.length;i++){
counts[datas[i]]++;
}
for(int i=0;i<10;i++){
System.out.println(counts[i]);
}
}
public static void main(String[] args) {
int datas[]=new int[100];
Practice3_dap p3=new Practice3_dap();
p3.intArray(datas, 100);
p3.dataPrint(datas);
p3.bindo_dap(datas);
}
}
나의 답안
package dev_java.Homework.quiz1215;
/*
* 연습문제 3
0 부터 9사이의 임의의 수를 100개를 채번하여 한 줄에 10개씩
출력하고 그 숫자의 빈도수를 계산하여 출력하시오
원본 : 0 1 2 3 4 5 6 7 8 9
2 5 6 8 7 8 9 0 1 1
5
3
3
7
9
2
0 4 5 6 6 7 8 8 9 9
숫자 : 0 1 2 3 4 5 6 7 8 9
갯수 : 10 9 18 11 7 9 15 14 7 5
100개를 일차배열로 초기화하기
카운트는 전역으로
100개는 지변으로
*/
public class Practice3 {
int counts[]=new int[10];
int[] intArray(int datas[], int size){
int i=0;
for(;i<datas.length;i++){
datas[i]=(int)(Math.random()*10);
}
dataPrint(datas);
return datas;
}
void dataPrint(int[] datas){
for(int i=0; i<datas.length;i++){
System.out.print(datas[i]);
if(i%10==9){
System.out.println("\n");
}//end of if
}//end of for
}
void bindo(int[] datas){
for(int i=0;i<datas.length;i++){
for(int j=0;j<10;j++){
if(j==datas[i]){
counts[j]=counts[j]+1;
}
}//end of inner for
System.out.println(counts);
}//end of outter for
;
}
public static void main(String[] args) {
int datas[]=new int[100];
Practice3 p3=new Practice3();
p3.intArray(datas, 100);
p3.dataPrint(datas);
}
}
댓글