加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy Tip 25 魔幻数组 五

发布时间:2020-12-14 16:58:47 所属栏目:大数据 来源:网络整理
导读:???????????? Groovy Tip 25 魔幻数组 五 ? ? 本系列前面章节曾谈到过数组来模拟数学集合的一些操作,比如“交集”、“并集”、“集合求差”和“集合反转”等,都是集合的一些基本运算。但是,除此之外,还有一些集合的基本运算,如“属于”、“子集”等以及

???????????? Groovy Tip 25 魔幻数组

?

?

本系列前面章节曾谈到过数组来模拟数学集合的一些操作,比如“交集”、“并集”、“集合求差”和“集合反转”等,都是集合的一些基本运算。但是,除此之外,还有一些集合的基本运算,如“属于”、“子集”等以及与它们的相关运算,却没有提及,因此在本节来一一谈到。

首先说“属于”运算,我们说如果一个对象是数组中的一个元素,就说这个对象“属于”那个数组,在Groovy语言中的操作符为“in”。示例代码如下:

?

??? ?

??? ? def list1 = [1,3,4,5,6]

??? ?

??? ? println (1 in list1)

?

运行结果为:

true

?

当然,如果如下的代码:

?

?????? println (9 in list1)

?

运行结果为:

false

?

当然,我们说一个对象“属于”一个数组,也可以说那个数组“包含”那个对象。因此,下面的代码是和上面的代码等价的:

?

?????? println list1.contains(1)

??????

?????? println list1.contains(9)

?

?

知道了一个对象“属于”一个数组只是第一步,接下来我们可能想进一步知道数组里有多少个这样的对象:

?

?

?????? def list3 = ['a','b','c']

??????

?????? println list3.count('a')

???

?

运行结果为:

1

?

同样的:

?

?????? println (['a','a','c'].count('a'))

??????

?????? println (['a','c'].count('d'))

??????

?

运行结果为:

2

0

?

?

当然了,我们对元素在数组中的位置也是相当的关心,“indexOf”方法会告诉我们对象在数组中的第一个的位置:

?

?????? println (['a','c'].indexOf('a'))

???

?

运行结果为:

0

?

当然,我们也可以知道对象在数组中的最后一个的位置,“lastIndexOf”方法会告诉我们。如下:

?

?????? println (['a','c'].lastIndexOf('a'))

???

?

运行结果为:

2

?

如果一个对象不包含在一个数组中,那么“indexOf”方法的返回值则是“-1”,示例代码如下:

?

?????? println (['a','c'].indexOf('d'))

???

?

运行结果为:

-1

?

说完了“属于”运算及其相关的方法,接着就是说说“子集”运算了,判断一个数组是否是另一个数组的“子集”不能使用“in”操作符了,而要使用“containsAll”方法,示例代码如下:

?

?

?

?????? def list4 = ['a','c','d']

??????

?????? def list5 = ['a','d']

??????

?????? println list4.containsAll(list5)

?

?????? println list4.containsAll(['a','e'])

??????

???

?

运行结果为:

true

false

?

而下面的代码:

?

?????? def list6 = ['a','a']

??????

?????? println list6.containsAll(['a','b'])

??????

???

?

运行结果为:

true

?

前面的篇幅谈到过两个数组的“交集”,现在的问题是怎么判断是否有“交集”呢?在Groovy语言中也有特别的方法来判断,请看下面的例子:

?

?????? println list4.disjoint(['e','f','a'])

??????

?????? println list4.disjoint(['e','f'])

??????

???

?

运行结果为:

false

true

?

list4和集合“['e','a']”有一个相同的元素“a”,当然是有“交集”,则“disjoint”方法返回false;而list4和集合“['e','f']”则完全没有相同的元素,因而返回true

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读