Search code examples
setballerina

How to create a set in Ballerina?


I have a requirement to create a set of strings using an array of strings in Ballerina. Other than using reduce() or checking indexOf() before inserting, I couldn't find a way to create a set using Ballerina programming language.

    string[] arr = ["a", "b", "c", "a", "d", "c"];
    string[] set = arr.reduce(function(string[] accum, string item) returns string[] {
            if accum.indexOf(item) == () {
                accum.push(item);
            }
            return accum;
        }, []);

Is there a better way to create a set in Ballerina?


Solution

  • Since what you want is just set of strings, I would suggest to use a map.

    import ballerina/io;
    
    public function main() {
        string[] s = ["a", "b", "a"];
        map<()> m = {};
        foreach var i in s {
            m[i] = ();
        }
        string[] unique = m.keys();
        io:println(unique);
    }
    
    

    For set of complex type, we can go with a table and do something similar to what we did with map.