Android Gradle学习系列(三)-核心语法讲解与实战之映射详解

前言

这一篇我们主要讲解下Groovy数据结构中的映射,我们和上一篇列表一样分为两部分:定义和使用

映射的定义

我们在Java中定义一个Map一般是这样定义的Map map=new HashMap(),我们Groovy中定义和我们之前说的列表很像,列表里面每个元素是单个对应的,而我们的Map是放括号里面每个元素是key:value形式,举个例子:

def colors = ['red'  : '#ff0000',
              'green': '#00ff00',
              'blue' : '#0000ff']

那么这个colors属于哪个Map呢?我们打印下,这里需要主要一点,之前我们打印都是直接用这个变量.class,但是这里不行,因为直接.class的话它会去它的元素中找keyclass的元素,这个下面会说到,所以这里要使用getClass
在这里插入图片描述
我们可以看到系统默认的是LinkedHashMap,如果你想修改它的类型就需要as关键字了,这个之前几篇文章中有过介绍

注意:

  • map定义时,key通常是用不可变字符串或number来定义。
  • 字符串不使用单引号时,Groovy默认会认为是不可变的单引号字符串。(如:red'red' 一样)

映射的使用

1.获取某个key对应的value值

如果我们想获取某一个key对应的value呢?在java中,我们通过get方法传入相应的key,Groovy中也提供了这个方法
在这里插入图片描述
但是在Groovy中还提供了一个更为简便的方法,直接通过[]或者.,比如我们也是获取red这个key对应的value

在这里插入图片描述

2.添加元素

我们首先添加一个元素试试,我们想添加一个key是``yellow,value#ffff00这个元素,我们可以直接使用.操作符
在这里插入图片描述

Groovy会首先在我们的Map中找,看看有没有keyyellow的元素,没有就新增一个,有就更新那个元素的value值,我们测试下一个有的
在这里插入图片描述

我们发现并没有新增一个keyred的元素,而是更新了mapkeyredvalue
那么我们想添加多个元素怎么做呢?Java中我们通过putAll方法,但是我们Groovy中呢我们可以直接添加任意类型key-value,我们举个例子看下
在这里插入图片描述

3.删除元素

在这里插入图片描述

4.遍历

这里主要是使用each方法,这里我们定义一个Map学生集合

def students = [
        1: [number: '0001', name: 'Bob', score: 55, sex: 'male'],
        2: [number: '0002', name: 'Johnny', score: 62, sex: 'female'],
        3: [number: '0003', name: 'Claire', score: 73, sex: 'female'],
        4: [number: '0004', name: 'Amy', score: 66, sex: 'male']
]

接下来都是以这个map进行操作,我们先用最基本的方式
在这里插入图片描述

接着我们带索引的遍历,使用eachWithIndex
在这里插入图片描述
其实GroovyMap遍历还有一种直接通过key-value方式遍历的,方法和上面两个一样,我们写个例子
在这里插入图片描述

5.查找

Map的查找和我们之前的List基本是一样的

5.1获取及格的第一个学生

在这里插入图片描述

5.2获取及格的所有学生

在这里插入图片描述

5.3获取所有男同学及格人数

在这里插入图片描述

5.4获取所有及格同学的姓名

这里就需要使用一个新的方法collect了,它会根据你传入的条件进行过滤
在这里插入图片描述

5.5对及格和不及格同学进行分组

这里我们同样要用到一个新的方法groupBy
在这里插入图片描述

6.排序

在这里插入图片描述

发布了87 篇原创文章 · 获赞 319 · 访问量 149万+

猜你喜欢

转载自blog.csdn.net/Greathfs/article/details/102925580
今日推荐