transpose()方法实际上就是数学中矩阵的转置,简单的来说就是行和列的交换:
assert [[1,4],[2,5],[3,6]] == [list1,list2].transpose()
transpose()不止可以用于两个List,还能用于多个List。譬如,我们有第三个List:
def list3 = [7,8,9]
我们可以这样检查是否满足“list3 > list2 > list1”(每个对应的元素):
assert [list1,list2,list3].transpose().every { a,b,c -> a < b && b < c } assert [[1,4,7],5,8],6,9]] == [list1,list3].transpose()
有一点需要注意的是,如果List的长度不一,则取最短的长度:
def list4 = [1,1,1] def list5 = [2,2] assert [[1,2],[1,2]] == [list4,list5].transpose()
def list = [1,2,3] result = list.inject(0){s,l -> s += l } assert 6 == result
def list = ['like','groovy'] result = list.inject('I'){s,l -> "$s $l" } assert "I like groovy" == result
两个方法 结合使用举例,假设我们有两个List,分别是a和b,a和b的长度相同,现在我们想把a的每个元素作为key,b中对应的元素作为value,构造一个Map:
def a = [1,3] def b = [4,6] def m = [a,b].transpose().inject([:]) { s,l -> s + [(l[0]): l[1]] } assert m == [1: 4,2: 5,3: 6]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。