How to Convert Array to Set in swift with example

Array and Set are both data structures used to store a collection of elements. Let’s see some differences between Array and store

Arrays:

  • Array stores the duplicate elements
  • It stores the elements in insertion order.

Set:

  • Set stores unique elements or objects
  • Order is not guaranteed
  • Set uses hashing values to store the objects, Hence retrieving the elements is faster compared to Array.

This tutorial explains multiple ways to Convert an Array to a Set in Swift with an example

How to convert Array to Set in Swift with examples

Set Constructor accepts array objects, It is easy to convert to Set. Here is an example

var array=["one", "two", "three"]
let set = Set(array)
print(set)

Output:

["two", "three", "one"]

An example contains an array with duplicates, converted to Set, and prints unique values. Here is an example

var array=["one", "one", "two", "three"]
let set = Set(array)
print(set)

Output:

["two", "three", "one"]

Another using arrayLiteral in set Constructor

var set = Set<String>(arrayLiteral: "one", "two", "three")
print(set) //["three", "two", "one"]
var set1 = Set<Int>(arrayLiteral: 1,4,5,6,1)
print(set1) //[4, 1, 6, 5]

From the above examples, the Type of the set is inferred based on the array of literal values.

If the Array of the string returns data of typeSet<String> If Array of Int returns data of typeSet<Int>

How to convert Array of Struct to Set in Swift

Here, an Array of Custom objects that contain properties, is converted to a Set with object properties.

Following is an example

  • Created Struct of Employee that contains a name field
  • Next, Created an Array of Employees using literal syntax
  • Convert the object array into an Array of fields using the map method.
  • Pass Array of fields to Set constructor

Here is an example

struct Employee {
    let name: String
}

let employees = [
    Employee(name: "John"),
    Employee(name: "Mark"),
    Employee(name: "Lee"),
    Employee(name: "Frank"),
        Employee(name: "Frank")

]

let employeeNames = employees.map({ $0.name })
let set = Set(employeeNames)
print(set) //["Lee", "Mark", "John", "Frank"]

How to convert NSArray to Set in Swift with examples

NSArray is an Immutable class Objective class reference type.

Create an NSArray using an array literal constructor. Next, Create an Empty Set iterate NSArray using for in loop, and add to NSArray Here is an example

import Foundation
let array: NSArray = NSArray(array: [1,0,21,48,13,4,5])
var setData=Set<Int>();
for number in (array as? [Int])! {
    setData.insert(number)
}

print(setData)

Output:

[5, 21, 4, 1, 0, 48, 13]