Sunil
Sunil

Reputation: 83

scala Array[Byte] diff

I am using diff method to compare two String's byte arrays but giving unexpected (or is it the expected behavior?) results.

diff() returns true for (subString diff originalString), but returns false for (originalString diff subString). Would be great if any one can explain this. Code sample & output are given below.

Code snippet

val subString : Array[Byte] = "cde".getBytes("UTF-8")
val originalString : Array[Byte] = "abcdefg".getBytes("UTF-8")

println(s"compare subString with originalString - ${((subString diff originalString).isEmpty).toString}")
println(s"compare originalString with subString - ${((originalString diff subString).isEmpty).toString}")

Output

compare subString with originalString - true

compare originalString with subString - false

Upvotes: 3

Views: 281

Answers (1)

perreal
perreal

Reputation: 97948

diff is not compare; it is like set difference, "what are the characters that are in the first string but not in the second one?"

"abcd" diff "a" = "bcd"
"a" diff "abcd" = ""

so these are almost equivalent:

"abc".toSet diff "cb".toSet = Set(a)
"abc" diff "cb" = "a"

Upvotes: 5

Related Questions