Kotlin HashSet類

Kotlin HashSet是一個集合類,它擴展了AbstractMutableSet類並實現了Set接口。 HashSet類使用散列機制存儲元素。 它支持讀寫功能。 但它不支持重複值,也不保證元素的順序。

HashSet類的聲明

open class HashSet<E> : AbstractMutableSet<E> (source)

Kotlin HashSet類的構造函數

構造函數

描述

HashSet()

它構造一個空的HashSet實例

HashSet(initialCapacity: Int, loadFactor: Float = 0f)

它用於構造指定容量的HashSet

HashSet(elements: Collection<E>)

它使用指定集合的元素構造HashSet實例。

Kotlin HashSet類的函數

函數

描述

open fun add(element: E): Boolean

它將給定元素添加到集合中。

open operator fun contains(element: E): Boolean

它檢查當前集合中是否存在指定的元素。

open fun isEmpty(): Boolean

它檢查當前集合是否爲空(不包含任何元素)。 如果找到的集合爲空則返回true,否則返回false

open fun iterator(): MutableIterator<E>

它返回當前對象元素的迭代器。

open fun remove(element: E): Boolean

如果當前集合中存在,它將刪除提及元素。 如果刪除成功則返回true,則返回false

open fun clear()

它會刪除此集合中的所有元素。

Kotlin HashSet的屬性

函數

描述

open val size: Int

此屬性用於返回HashSet集合的大小。

Kotlin HashSet示例1 - 容量

下面是一個定義容量的HashSet示例。 容量是指要在HashSet中添加的元素總數。 根據需要可以稍後增加減少量。

fun main(args: Array<String>){
    var hashSet = HashSet<Int>(6)
    hashSet.add(2)
    hashSet.add(13)
    hashSet.add(6)
    hashSet.add(5)
    hashSet.add(2)
    hashSet.add(8)
    println("......traversing hashSet......")
    for (element in hashSet){
        println(element)
    }
}

執行上面示例代碼,得到以下結果 -

......traversing hashSet......
8
2
13
5
6

Kotlin HashSet示例2 - 泛型

爲了更具體,可以使用HashSet類的hashSetOf <T>()方法提供泛型類型支持。

fun main(args: Array<String>){
    var hashSetOf1 = hashSetOf<Int>(2,13,6,5,2,8)
    var hashSetOf2: HashSet<String> = hashSetOf<String>("Python","Ajax" ,"Python","Ruby")
    println("......traversing hashSetOf1......")
    for (element in hashSetOf1){
        println(element)
    }
    println("......traversing hashSetOf2......")
    for (element in hashSetOf2){
        println(element)
    }
}

執行上面示例代碼,得到以下結果 -

......traversing hashSetOf1......
8
2
13
5
6
......traversing hashSetOf2......
Ruby
Python
Ajax

Kotlin HashSet示例3 - add() 和 addAll()函數

add()函數用於在HashSet實例中添加元素,而addAll()函數將指定集合的所有元素添加到HashSet

fun main(args: Array<String>){
    var hashSet = HashSet<Int>(3)
    val intSet = setOf(6,4,29)
    hashSet.add(2)
    hashSet.add(13)
    hashSet.add(6)
    hashSet.add(5)
    hashSet.add(2)
    hashSet.add(8)
    println("......traversing hashSet......")
    for (element in hashSet){
        println(element)
    }
    hashSet.addAll(intSet)
    println("......traversing hashSet after hashSet.addAll(intSet)......")
    for (element in hashSet){
        println(element)
    }
}

執行上面示例代碼,得到以下結果 -

......traversing hashSet......
8
2
13
5
6
......traversing hashSet after hashSet.addAll(intSet)......
2
4
5
6
8
13
29

Kotlin HashSet示例4 - size, contains() 和 containsAll()函數

size屬性返回HashMap中存在的總元素。 如果contains()函數中的指定元素包含在集合中,則contains()函數返回true,而containsAll()函數檢查此集合中是否包含指定集合的所有元素。

fun main(args: Array<String>){
    var hashSetOf1: HashSet<Int> = hashSetOf<Int>(2,6,13,4,29,15)
    val mySet = setOf(6,4,29)

    println("......traversing hashSetOf1......")
    for (element in hashSetOf1){
        println(element)
    }
    println(".....hashSetOf1.size.....")
    println(hashSetOf1.size)
    println(".....hashSetOf1.contains(13).....")
    println(hashSetOf1.contains(13))
    println("....hashSetOf1.containsAll(mySet)...")
    println(hashSetOf1.containsAll(mySet))
}

執行上面示例代碼,得到以下結果 -

......traversing hashSetOf1......
2
4
13
29
6
15
.....hashSetOf1.size.....
6
.....hashSetOf1.contains(13).....
true
....hashSetOf1.containsAll(mySet)...
true

Kotlin HashSet示例5 - remove() 和 removeAll()函數

remove()函數從集合中刪除指定的元素(如果存在),而removeAll()函數從當前集合中刪除所有指定的元素(如果存在)。

fun main(args: Array<String>){
    var hashSetOf1: HashSet<Int> = hashSetOf<Int>(2,6,13,4,29,15)
    val mySet = setOf(6,4,29)

    println("......traversing hashSetOf1......")
    for (element in hashSetOf1){
        println(element)
    }
    println(".....hashSetOf1.remove(6)......")
    println(hashSetOf1.remove(6))
    println("......traversing hashSetOf1 after remove(6)......")
    for (element in hashSetOf1){
        println(element)
    }
    println("......hashSetOf1.removeAll(mySet)......")
    println(hashSetOf1.removeAll(mySet))
    println("......traversing hashSetOf1 after removeAll(mySet)......")
    for (element in hashSetOf1){
        println(element)
    }
}

執行上面示例代碼,得到以下結果 -

......traversing hashSetOf1......
2
4
13
29
6
15
.....hashSetOf1.remove(6)......
true
......traversing hashSetOf1 after remove(6)......
2
4
13
29
15
......hashSetOf1.removeAll(mySet)......
true
......traversing hashSetOf1 after removeAll(mySet)......
2
13
15

Kotlin HashSet示例6 - isEmpty() 和 isNotEmpty()函數

isEmpty()函數檢查當前集合是否爲空,而isNotEmpty()函數檢查當前集合是否不爲空。

fun main(args: Array<String>){
    var hashSetOf1: HashSet<Int> = hashSetOf<Int>(2,6,13,4,29,15)

    println("......traversing hashSetOf1......")
    for (element in hashSetOf1){
        println(element)
    }
    println(".....hashSetOf1.isEmpty()....")
    if(hashSetOf1.isEmpty()){
        println("hash set is empty")
    }
    else{
        println("hash set is not empty")
    }
    println(".....hashSetOf1.isNotEmpty()....")
    if(hashSetOf1.isNotEmpty()){
        println("hash set is not empty")
    }
    else{
        println("hash set is empty")
    }
}

執行上面示例代碼,得到以下結果 -

......traversing hashSetOf1......
2
4
13
29
6
15
.....hashSetOf1.isEmpty()....
hash set is not empty
.....hashSetOf1.isNotEmpty()....
hash set is not empty