按第一个元素对两个列表进行排序,然后将它们压缩到 Scala 中 [英] sort two lists by their first element and zip them in scala

查看:35
本文介绍了按第一个元素对两个列表进行排序,然后将它们压缩到 Scala 中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 val descrList = cursorReal.interfaceInfo.interfaces.map {
    case values => (values.ifIndex , values.ifName , values.ifType)
  }

 val ipAddressList = cursorReal.interfaceIpAndIndex.filter(x=> (!x.ifIpAddress.equalsIgnoreCase("0"))).map {
    case values => (values.ifIndex,values.ifIpAddress)
  }

例如

val descrList = 
  List((12,"VoIP-Null0",1), (8,"FastEthernet6",6), (19,"Vlan11",53),
       (4,"FastEthernet2",6), (15,"Vlan1",53), (11,"GigabitEthernet0",6),
       (9,"FastEthernet7",6), (22,"Vlan20",53), (13,"Wlan-GigabitEthernet0",6), 
       (16,"Async1",1), (5,"FastEthernet3",6), (10,"FastEthernet8",6), 
       (21,"Vlan12",53), (6,"FastEthernet4",6), (1,"wlan-ap0",24), 
       (17,"Virtual-Template1",131), (14,"Null0",1), (20,"Vlan10",53), 
       (2,"FastEthernet0",6), (18,"NVI0",1), (7,"FastEthernet5",6), 
       (29,"Virtual-Access7",131), (3,"FastEthernet1",6), (28,"Virtual-Access6",131))

val ipAddressList = List((21,"192.168.12.1"), (19,"192.168.11.1"), 
                         (11,"104.36.252.115"), (20,"192.168.10.1"), 
                         (22,"192.168.20.1"))

在两个列表中,第一个元素是索引,我必须明智地合并这两个列表索引.它的意思是(21,"192.168.12.1") 这个 ipAddress 应该与 (21,"Vlan12",53) 合并并形成如下的新列表 (21,"Vlan12",53,"192.168.12.1").

In both the lists first element is index and i have to merge these two list index wise . It means (21,"192.168.12.1") this ipAddress should merge with (21,"Vlan12",53) and form new list like below (21,"Vlan12",53,"192.168.12.1").

推荐答案

scala> descrList map {case (index, v1, v2) =>
   (index, v1, v2, ipAddressList.toMap.getOrElse(index, "empty"))}
res0: List[(Int, String, Int, String)] = List(
(12,VoIP-Null0,1,empty), (8,FastEthernet6,6,empty), (19,Vlan11,53,192.168.11.1), 
(4,FastEthernet2,6,empty), (15,Vlan1,53,empty), (11,GigabitEthernet0,6,104.36.252.115), 
(9,FastEthernet7,6,empty), (22,Vlan20,53,192.168.20.1), (13,Wlan-GigabitEthernet0,6,empty), 
(16,Async1,1,empty), (5,FastEthernet3,6,empty), (10,FastEthernet8,6,empty), 
(21,Vlan12,53,192.168.12.1), (6,FastEthernet4,6,empty), (1,wlan-ap0,24,empty), (17,Virtual-
Template1,131,empty), (14,Null0,1,empty), (20,Vlan10,53,192.168.10.1), (2,FastEthernet0,6,empty),
(18,NVI0,1,empty), (7,FastEthernet5,6,empty), (29,Virtual-Access7,131,empty),
(3,FastEthernet1,6,empty), (28,Virtual-Access6,131,empty))

这篇关于按第一个元素对两个列表进行排序,然后将它们压缩到 Scala 中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆