튜플

() : 한 쌍의 소괄호로 이루어진 리스트와 비슷한 자료구조이다.

구조적 튜플

인덱스를 통해서 접근가능

apple = ('apple', 'red')
banana = ('banana', 'yellow')
cherry = ('cherry', 'red')

fruits = [apple, banana, cherry]

for fruit in fruits:
    print(fruit[0], ' 열매의 색상은 ', fruit[1]) 

명목상 튜플

컴포넌트 명을 통해 접근

typealias Fruit = (name: String, color: String)

let fruits: [Fruit] = [
    (name: "apple", color: "red"),
    (name: "banana", color: "yellow"),
    (name: "cherry", color: "red")
]

for fruit in fruits{
    println("\(fruit.name) 열매의 색상은 \(fruit.color)")
}

기본 POJO

POJO: 순수 java 객체 보일러플레이트: toString(), equals(), hashCode()

public class User {
    private String userName;
    private boolean active;
    private LocalDateTime lastLogin;

    public User(String userName, boolean active, LocalDateTime lastLogin){
        this.userName = userName;
        this.active = active;
        this.lastLogin = lastLogin;
    }

    // .. getter setter
    
    // .. hashCode(), equals(), toString()
}

불변 POJO

필드가 재할당 될 수 없는 것 따라서, setter가 없음

public class User {
    private final String userName;
    private final boolean active;
    private final LocalDateTime lastLogin;

    public User(String userName, boolean active, LocalDateTime lastLogin){
        this.userName = userName;
        this.active = active;
        this.lastLogin = lastLogin;
    }

    // .. getter
    
    // .. hashCode(), equals(), toString()
}

레코드

JDK 14버전이상 부터 지원

extends 불가 implements 가능

public record User(String userName, boolean active, LocalDateTime lastLogin, int compareKey) implements Comparable<T> {
    @Override
    public int compareTo(T o) {
        Container container = (Container) o;
        return Integer.compare(compareKey(), container.compareKey());
    }
}

댓글남기기