Swift 如何制作 Multimap(Java)

Swift how can I make Multimap(Java)

我开始 Swift 和 IOS 开发,所以我对此很陌生,我在 java 中制作我想要的东西(参见示例)但我找不到如何在 Swift 我想在 Swift 上制作一本字典,我知道我可以这样做

var dict = Dictionary<String, Array<String>>()

var s1 = "one"
var s2 = "two"
var s3 = "three"
var root = "numbers"
dict[root] = [s1,s2,s3]

for str in dict
{
    print(str.value)
}

但这不是我想要的。我在 java 中做了同样的事情,就像这样

final TreeMultimap<String, String> third1000multi = TreeMultimap.create(Ordering.<String>natural(), Ordering.<String>natural());
for (Word w : third1000) {
            third1000multi.put(w.getType(), w.getWord());
        }

如果没有这样的键,必须创建一个键,如果有键,则必须将值添加到键中。例如,

  1. "choose" --> "choosing"(没有任何键 "choose" 所以创建一个并把它 "choosing" value choose = ["choosing" ] )

2."choose"--> choosen(有一个名为“choose”的键,所以在里面添加这个值。ch​​oose = ["choosing","choosen"] 感谢您的帮助:)

您可以使用 Dictionary subscript(_:default:) 访问器。

var dict = [String:[String]]()

var words = [ "one", "two", "three"]
var root = "numbers"

for word in words {
    dict[root, default: []].append(word)
}
print(dict)

或更接近您的 Java 代码:

var third1000multi = [String:[String]]()
for w in third1000 {
    third1000multi[w.type, default: []].append(w.word)
}