I have two Scala lists with different columns, but when I compare them using .diff(), I get unexpected results.
val TempPmTableColumns: Seq[String] = List("COLLECTTIME", "DATE", "TIME", "HOUR", "DAY", "WEEK", "MONTH", "NODE", "NEUSERNAME", "SUSPECTFLAG", "CELLID", "NODE_PM", "CELLID_TYPE", "ASLDUR", "CHOVERS", "LBUSDUR", "LINHNO", "LOCINHDUR", "NMSURE", "NMSUTR", "NNAREC", "NORTRO", "NSIFSRE", "NSIFTR", "NSLALPRFL", "NSUERR", "REMINHDUR", "RINHNO", "SYS7IND", "UNAVAILDUR", "UNAVRBLDUR", "UNAVSLFDUR", "COLLINT", "FILE_REVISION", "JOBTIME")
val finalPmTableColumns: Seq[String]= List("COLLECTTIME", "CELLID", "NODE", "SUSPECTFLAG", "NEUSERNAME", "NETWORK", "CITY", "REGION", "PERIOD", "DATE", "TIME", "HOUR", "DAY", "WEEK", "MONTH", "NODE_PM", "CELLID_TYPE", "ASLDUR", "CHOVERS", "LBUSDUR", "LINHNO", "LOCINHDUR", "NMSURE", "NMSUTR", "NNAREC", "NORTRO", "NSIFSRE", "NSIFTR", "NSLALPRFL", "NSUERR", "REMINHDUR", "RINHNO", "SYS7IND", "UNAVAILDUR", "UNAVRBLDUR", "UNAVSLFDUR", "COLLINT", "FILE_REVISION", "JOBTIME", "NODE_VALUE")
println(TempPmTableColumns)
println(finalPmTableColumns)
var ColumnDifferenceleft = TempPmTableColumns.diff(finalPmTableColumns)
println(ColumnDifferenceleft)
var ColumnDifferenceRight = finalPmTableColumns.diff(TempPmTableColumns)
println(ColumnDifferenceRight)
Output:-
List(COLLECTTIME, DATE, TIME, HOUR, DAY, WEEK, MONTH, NODE, NEUSERNAME, SUSPECTFLAG, CELLID, NODE_PM, CELLID_TYPE, ASLDUR, CHOVERS, LBUSDUR, LINHNO, LOCINHDUR, NMSURE, NMSUTR, NNAREC, NORTRO, NSIFSRE, NSIFTR, NSLALPRFL, NSUERR, REMINHDUR, RINHNO, SYS7IND, UNAVAILDUR, UNAVRBLDUR, UNAVSLFDUR, COLLINT, FILE_REVISION, JOBTIME)
List(COLLECTTIME, CELLID, NODE, SUSPECTFLAG, NEUSERNAME, NETWORK, CITY, REGION, PERIOD, DATE, TIME, HOUR, DAY, WEEK, MONTH, NODE_PM, CELLID_TYPE, ASLDUR, CHOVERS, LBUSDUR, LINHNO, LOCINHDUR, NMSURE, NMSUTR, NNAREC, NORTRO, NSIFSRE, NSIFTR, NSLALPRFL, NSUERR, REMINHDUR, RINHNO, SYS7IND, UNAVAILDUR, UNAVRBLDUR, UNAVSLFDUR, COLLINT, FILE_REVISION, JOBTIME, NODE_VALUE)
List()
List(NETWORK, CITY, REGION, PERIOD, NODE_VALUE)
I have two Scala lists with different columns, but when I compare them using .diff(), I get unexpected results.
val TempPmTableColumns: Seq[String] = List("COLLECTTIME", "DATE", "TIME", "HOUR", "DAY", "WEEK", "MONTH", "NODE", "NEUSERNAME", "SUSPECTFLAG", "CELLID", "NODE_PM", "CELLID_TYPE", "ASLDUR", "CHOVERS", "LBUSDUR", "LINHNO", "LOCINHDUR", "NMSURE", "NMSUTR", "NNAREC", "NORTRO", "NSIFSRE", "NSIFTR", "NSLALPRFL", "NSUERR", "REMINHDUR", "RINHNO", "SYS7IND", "UNAVAILDUR", "UNAVRBLDUR", "UNAVSLFDUR", "COLLINT", "FILE_REVISION", "JOBTIME")
val finalPmTableColumns: Seq[String]= List("COLLECTTIME", "CELLID", "NODE", "SUSPECTFLAG", "NEUSERNAME", "NETWORK", "CITY", "REGION", "PERIOD", "DATE", "TIME", "HOUR", "DAY", "WEEK", "MONTH", "NODE_PM", "CELLID_TYPE", "ASLDUR", "CHOVERS", "LBUSDUR", "LINHNO", "LOCINHDUR", "NMSURE", "NMSUTR", "NNAREC", "NORTRO", "NSIFSRE", "NSIFTR", "NSLALPRFL", "NSUERR", "REMINHDUR", "RINHNO", "SYS7IND", "UNAVAILDUR", "UNAVRBLDUR", "UNAVSLFDUR", "COLLINT", "FILE_REVISION", "JOBTIME", "NODE_VALUE")
println(TempPmTableColumns)
println(finalPmTableColumns)
var ColumnDifferenceleft = TempPmTableColumns.diff(finalPmTableColumns)
println(ColumnDifferenceleft)
var ColumnDifferenceRight = finalPmTableColumns.diff(TempPmTableColumns)
println(ColumnDifferenceRight)
Output:-
List(COLLECTTIME, DATE, TIME, HOUR, DAY, WEEK, MONTH, NODE, NEUSERNAME, SUSPECTFLAG, CELLID, NODE_PM, CELLID_TYPE, ASLDUR, CHOVERS, LBUSDUR, LINHNO, LOCINHDUR, NMSURE, NMSUTR, NNAREC, NORTRO, NSIFSRE, NSIFTR, NSLALPRFL, NSUERR, REMINHDUR, RINHNO, SYS7IND, UNAVAILDUR, UNAVRBLDUR, UNAVSLFDUR, COLLINT, FILE_REVISION, JOBTIME)
List(COLLECTTIME, CELLID, NODE, SUSPECTFLAG, NEUSERNAME, NETWORK, CITY, REGION, PERIOD, DATE, TIME, HOUR, DAY, WEEK, MONTH, NODE_PM, CELLID_TYPE, ASLDUR, CHOVERS, LBUSDUR, LINHNO, LOCINHDUR, NMSURE, NMSUTR, NNAREC, NORTRO, NSIFSRE, NSIFTR, NSLALPRFL, NSUERR, REMINHDUR, RINHNO, SYS7IND, UNAVAILDUR, UNAVRBLDUR, UNAVSLFDUR, COLLINT, FILE_REVISION, JOBTIME, NODE_VALUE)
List()
List(NETWORK, CITY, REGION, PERIOD, NODE_VALUE)
Share
Improve this question
edited Apr 1 at 10:37
Finbar Good
1,4812 gold badges9 silver badges14 bronze badges
asked Apr 1 at 10:12
Suhani BhatiaSuhani Bhatia
1051 silver badge6 bronze badges
2
|
1 Answer
Reset to default 1finalPmTableColumns
contains all items in TempPmTableColumns
, plus the following: "NETWORK", "CITY", "REGION", "PERIOD", "NODE_VALUE"
.
listA.diff(listB)
returns listA
minus all items in listB
. Items in listB
that are not in listA
are ignored. So if listB
contains all items in listA
, then listA.diff(listB)
will return an empty list, regardless of whether listB
has some other items. diff
is not commutative.
List
, you want to useSet
and then do(s1 union s2) diff (s1 intersect s2)
– Luis Miguel Mejía Suárez Commented Apr 1 at 13:22