// SetBehavior.kt(Setのふるまい)
fun main() {
    println("MutableSetは、値を重複させない")
    val setBehavior = mutableSetOf("a", "b", "c")
    setBehavior.add("d")
    setBehavior.add("e")
    setBehavior.add("d")
    setBehavior.add("d")
    println(setBehavior)

    println("MutableListは、値を重複させる")
    val listBehavior = mutableListOf("a", "b", "c")
    listBehavior.add("d")
    listBehavior.add("e")
    listBehavior.add("d")
    listBehavior.add("d")
    println(listBehavior)

    println("classタイプでも、重複させない?")
    class Car(val color: String)

    val car1: Car = Car("red")
    val car2: Car = Car("red")
    val car3: Car = Car("blue")
    val setBehavior2: MutableSet<Car> = mutableSetOf(car1, car2, car3)
    setBehavior2.add(car1)
    setBehavior2.add(car1)
    setBehavior2.add(car2)
    setBehavior2.add(car2)
    setBehavior2.add(car3)
    println(setBehavior2)
    println("car1==car2: ${car1 == car2}")
}
/*
MutableSetは、値を重複させない
[a, b, c, d, e]
MutableListは、値を重複させる
[a, b, c, d, e, d, d]
classタイプでも、重複させない?
[SetBehaviorKt$main$Car@90f6bfd, SetBehaviorKt$main$Car@47f6473, SetBehaviorKt$main$Car@15975490]
car1==car2: false
*/