본문 바로가기
학원수업

12/16 국비학원 자바 15회차(Vector)

by 코딩마스터^^ 2022. 12. 16.

변수-배열-객체배열-자료구조(Vector)

자료구조는 오브젝트 즉 모든 구조를 담는다.

 

E는 원소 elements를 뜻한다.

 

메소드 오버로딩의 규칙

리턴타입은 관계 없다.

접근제한자도 상관 없다.

 

메소드 선택에 따라서 반환값이 있을수도 있고 없을 수도있다.

 

Vector

출처 : https://coding-factory.tistory.com/553

 

[Java] 자바 Vector 사용법 & 예제 총정리

Vector란? Vector는 ArrayList와 동일한 내부구조를 가지고 있습니다. ArrayList와 마찬가지로 Vector내부에 값이 추가되면 자동으로 크기가 조절되며 그다음 객체들은 한 자리씩 뒤로 이동됩니다. 하지만

coding-factory.tistory.com

Vector를 사용할때에는 타입을 명시해주는 것이 좋습니다. JDK 5.0 이후부터 자료형의 안정성을 위해 제너릭스(Generics)라는 개념이 도입되었습니다. Vector<Integer> v = new Vector<Integer>();이라고 되어있다면 int객체들만 add되어질 수 있고 다른 타입의 객체는 사용이 불가능합니다.

 

※제네릭스는 선언할 수 있는 타입이 객체 타입입니다. int는 기본자료형이기 때문에 들어갈 수 없으므로 int를 객체화시킨 wrapper클래스를 사용해야 합니다. Integer

 

Vector에 값을 추가하려면 Vectoradd(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);
    
  }
}

댓글