Java Guava Sets.difference
поведение:
Known = ["v1","v2"]; Incoming = ["v2","v3","v4"]
incoming = ["v2","v3","v4"]; knownUpdated = ["v2"]
Sets.difference(Known, Incoming) = v1 (To be removed)
Sets.difference(incoming, knownUpdated) = v3,v4 (To be added)
То, что я пробовал в Go, дает следующую разницу:
Output := [v1 v3 v4] (known, Incoming)
func Difference(slice1 []string, slice2 []string) []string {
var diff []string
for i := 0; i < 2; i++ {
for _, s1 := range slice1 {
found := false
for _, s2 := range slice2 {
if s1 == s2 {
found = true
break
}
}
if !found {
diff = append(diff, s1)
}
}
if i == 0 {
slice1, slice2 = slice2, slice1
}
}
return diff
}
Это дает симметричную разницу, но мне нужно поведениеГуава устанавливает.Я знаю, что-то не так с моим функционалом.Из документации по гуаве public static Sets.SetView difference(Set set1, Set set2)
: возвращенный набор содержит все элементы, которые содержатся в set1 и не содержатся в set2