结合两个列表与索引明智

时间:2014-10-13 09:30:37

标签: scala scala-collections

第一个列表

remoteDeviceAndPort===>List(
  (1,891w.yourdomain.com,wlan-ap0), 
   (13,ap,GigabitEthernet0), 
    (11,Router-3900,GigabitEthernet0/0)
   )

第二个清单

interfacesList===>List(
  (1,UP,,0,0,0,0,UP,4294,other,VoIP-Null0,0,0),
  (13,DOWN,,0,0,0,0,UP,100,Ethernet,FastEthernet6,0,0),
  (11,UP,,0,0,0,0,UP,100,vlan,Vlan11,4558687845,1249542878), 
  (2,UP,,0,0,972,1327,UP,0,Tunnel,Virtual-Access1,0,0), 
  (4,DOWN,,0,0,0,0,UP,100,Ethernet,FastEthernet2,0,0),
  (6,DOWN,,0,0,0,0,UP,100,Ethernet,FastEthernet2,0,0)
  )

以上是我的两个列表,现在我必须将这两个列表合并如下。

预期OutPut =>

 combineList = List(
   (1,UP,,0,0,0,0,UP,4294,other,VoIP-Null0,0,0,891w.yourdomain.com,wlan-ap0),        
   (13,DOWN,,0,0,0,0,UP,100,Ethernet,FastEthernet6,0,0,ap,GigabitEthernet0),
  (11,UP,,0,0,0,0,UP,100,vlan,Vlan11,4558687845,1249542878,Router-3900,GigabitEthernet0/0),
   (2,UP,,0,0,972,1327,UP,0,Tunnel,Virtual-Access1,0,0,empty,empty), 
  (4,DOWN,,0,0,0,0,UP,100,Ethernet,FastEthernet2,0,0,empty,empty),
  (6,DOWN,,0,0,0,0,UP,100,Ethernet,FastEthernet2,0,0,empty,empty)

1 个答案:

答案 0 :(得分:0)

类似问题here

case class NetworkDeviceInterfaces(index: Int, params: String*)

val remoteDeviceAndPort = List(
  (1,"891w.yourdomain.com","wlan-ap0"),
  (13,"ap","GigabitEthernet0"),
  (11,"Router-3900","GigabitEthernet0/0")
)

val rdapMap = remoteDeviceAndPort map {case (k, v1, v2) => k -> (v1, v2) } toMap

val interfacesList = List(NetworkDeviceInterfaces(1,"UP","","0","0","0","0","UP","4294","other","VoIP-Null0","0","0"))

val result = interfacesList map {
  interface => {
    val (first, second) = rdapMap.getOrElse(interface.index, ("empty", "empty"))
    NetworkDeviceInterfaces(interface.index, (interface.params ++ Seq(first, second)):_*)
  }
}
相关问题