Groovy Tip 23 魔幻数组 三

                          Groovy Tip 23 魔幻数组

 

 

数组可以说是一个广义的集合,它也可以做交集、并集等运算。

先从求交集说起,下面就是一个求交集的例子:

 

 

      def list11 = ['a','a','b','c','d']

     

      def list12 = ['a','b','a','e']

     

      println list11.intersect(list12)

     

 

 

运行结果为:

["a", "b", "a"]

 

当然,我们也可以用数组来模拟严格意义上的集合(没有相同的元素),即Java语言的Set对象。比如我们将上面的list11list12对象做“unique”运算,就得到了两个真正的集合对象,然后再将它们做“intersect”运算,就得到了它们的交集。

 

      def list13 = list11.unique()

      def list14 = list12.unique()

     

      println list13.intersect(list14)

     

 

 

结果为:

["a", "b"]

 

接着说说求并集。求并集在Groovy语言中就是两个数组相加,如下:

 

      def list15 = list11+list12

     

      println list15

 

 

结果为:

["a", "a", "b", "c", "d", "a", "b", "a", "e"]

 

当然,如果是要模拟严格意义上的集合求并集运算,其数组解决方法如下:

 

      def list16 = list11.unique()

      def list17 = list12.unique()

     

      def list18 = (list16+list17).unique()

     

      println list18

 

 

结果为:

["a", "b", "c", "d", "e"]

 

 

求在A集合而不在B集合的元素,即集合的求差运算。如下:

 

      def list16 = list11.unique()

      def list17 = list12.unique()

     

      def list19 = list16-list17

     

      println list19

     

 

 

结果为:

["c", "d"]

 

当然,上面是严格意义上的集合求差运算,如果只是两个数组相减的话,结果又是什么样呢?

 

 

      def list20 = ['a','a','b','b','c','e','e']

     

      def list21 = ['a','b','b']

     

      println list20-list21

 

 

结果为:

["c", "e", "e"]

 

对于结果一看,我们就知道是怎么回事了,无需我多说。

 

集合还有一种运算就反转,即将集合的第一个元素和最后一个元素的位置互换,如此类推。我们来看它的实现:

 

      def list22 = ['a','b','c','d','e','f']

     

      println list22.reverse()

 

结果为:

["f", "e", "d", "c", "b", "a"]

 

当然,除了“reverse”方法,还有一个“reverseEach”方法,也是相当有趣的。比如我们有了如下的一个数组:

 

     

      def list23 = ['Tom Cheng','Mike Wang','Jack Deng']

 

 

我们需要求得如下要求的一个数组:先是将list23的元素反转过来,然后再取数组中各个元素的名字,即“Tom”等组成一个新的数组。

 

 

      def list24 = []

     

      list23.reverseEach{

         def names = it.split(' ')

         list24 << names[0]

      }

     

      println list24

 

 

结果为:

["Jack", "Mike", "Tom"]

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
Groovy 中,你可以使用 `JsonSlurper` 类来反序列化 JSON 数据,包括数组。下面是一个示例,用于从 JSON 数据中反序列化一个字符串数组: ``` import groovy.json.JsonSlurper def json = '["apple", "banana", "cherry"]' def slurper = new JsonSlurper() def myArray = slurper.parseText(json) assert myArray instanceof List assert myArray.size() == 3 assert myArray[0] == "apple" assert myArray[1] == "banana" assert myArray[2] == "cherry" ``` 在上面的示例中,我们首先定义了一个包含字符串数组的 JSON 字符串。然后,我们创建了一个 `JsonSlurper` 对象,并使用其 `parseText` 方法将 JSON 字符串解析为 Groovy 中的对象。最后,我们检查了 `myArray` 对象是否是一个 `List` 类型的对象,并检查了数组中的元素是否正确。 如果 JSON 数据中包含的是对象数组,那么你可以将其反序列化为一个包含多个对象的列表,如下所示: ``` import groovy.json.JsonSlurper def json = '[{"name": "apple", "price": 1.0}, {"name": "banana", "price": 2.0}, {"name": "cherry", "price": 3.0}]' def slurper = new JsonSlurper() def myList = slurper.parseText(json) assert myList instanceof List assert myList.size() == 3 assert myList[0].name == "apple" assert myList[0].price == 1.0 assert myList[1].name == "banana" assert myList[1].price == 2.0 assert myList[2].name == "cherry" assert myList[2].price == 3.0 ``` 在上面的示例中,我们定义了一个包含对象数组的 JSON 字符串。我们使用 `JsonSlurper` 类的 `parseText` 方法将其反序列化为包含个对象的列表。我们检查了 `myList` 对象是否是一个 `List` 类型的对象,并检查了每个对象的属性是否正确。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值