본문 바로가기

배운내용 정리

자바의 구조체

  1. 자바의 구조체
  2. 사용하는 방법
  3. 느낀 점

1. 자바의 구조체

C나 C++, C#에는 있는 구조체는 아쉽지만 Java에는 지원하지 않는다. 하지만 클래스를 사용하여 구조체를 구현할 수 있다!. 이러한 구조체 구조는 나중에 여러 정보를 한 번에 객체에 담아서 처리하기 때문에 캡슐화에 용이하며 번거롭게 코드를 여러 번 타이핑할 필요 없이 한 번에 처리가능하다는 장점이 있다.

 2. 사용하는 방법

클래스를 생성하고 생성자를 만들 때 자신이 입력하고 싶은 데이터 타입에 맞게 클래스를 구성하면 된다.

public class Structure {
    int num;
    String name;
    String comment;

    public Structure(int num, String name, String comment){
        this.num = num;
        this.name = name;
        this.comment = comment;
    }
}

 

꼭 리스트를 사용하지 않아도 만들 수 있지만 구조체를 편리하게 리스트를 사용하여 만들었다.  Array.asList 정적 클래스를 사용해서 구조체 리스트를 만들 수 있다.

import java.util.ArrayList;
import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        // 구조체 생성
        ArrayList<Structure> structures = new ArrayList<>(Arrays.asList(
                new Structure(1, "홍길동", "구조체 만들고 싶어요")
                , new Structure(2, "전우치", "너도 만들 수 있어!")));
    }
}

마지막으로 출력은 다음과 같다. for문과 foreach에 대한 출력을 사용해 봤다. 만약 다른 Collection을 사용한다면  그 Collection에 맞는 데이터 접근을 통해 데이터를 출력해야 한다.

import java.util.ArrayList;
import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        // 구조체 생성
        ArrayList<Structure> structures = new ArrayList<>(Arrays.asList(
                new Structure(1, "홍길동", "구조체 만들고 싶어요")
                , new Structure(2, "전우치", "너도 만들 수 있어!")));
        // 출력
        for (int i = 0; i < structures.size(); i++) {
            System.out.println(structures.get(i).num+ ". " +structures.get(i).name + ": " + structures.get(i).comment);
        }
        for (Structure st: structures) {
            System.out.println(st.num+ ". " +st.name + ": " + st.comment);
        }
    }
}

3. 느낀 점

자바를 사용하면서 구조체의 기능이 필요해 자바 안에 있는 기능을 뒤져도 보고 구글링도 해봤지만 자바에 마땅한 기능이 없다고 해서 그래서 어떻게 구현하지 하면서 1시간 동안 구글링하면서 삽질을 통해 찾아냈다! 힘들게 찾은 만큼 다음에는 자유롭게 사용할 수 있을 것 같아서 기분이 좋다.

'배운내용 정리' 카테고리의 다른 글

Java Generic  (1) 2023.10.23
Java 예외처리  (1) 2023.10.23
객체지향(3)  (1) 2023.10.17
객체지향(2)  (0) 2023.10.17
객체지향(1)  (1) 2023.10.16