前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Groovy中的list

Groovy中的list

作者头像
FunTester
发布2020-04-16 15:16:53
1.1K0
发布2020-04-16 15:16:53
举报
文章被收录于专栏:FunTesterFunTester

在上一期从Java到Groovy的八级进化论中,我分享了Java是如何转变成Groovy。今天,我将分享学习Groovylist的语法支持。

以下Java类也是有效的Groovy类。其目的是过滤名称列表,以删除超过三个字符的名称。我们将创建一个名称列表,我们将调用一个负责过滤的实用程序方法,并打印结果。

代码语言:javascript
复制
package com.fun

import com.fun.frame.httpclient.FanLibrary
import org.slf4j.Logger

class TSSS extends FanLibrary {

    public static Logger logger = getLogger(TSSS.class)

    public static void main(String[] args) {
        List names = new ArrayList();
        names.add("Ted");
        names.add("Fred");
        names.add("Jed");
        names.add("Ned");
        List shortNames = filter(names, 3);
        output(shortNames.size());
        for (Iterator i = shortNames.iterator(); i.hasNext();) {
            String s = (String) i.next();
            output(s);
        }
    }

    public static List filter(List strings, int length) {
        List result = new ArrayList();
        for (String str : strings) {
            if (str.length() < length + 1) {
                result.add(str);
            }
        }
        return result;
    }

}

我们当然可以通过使用Arrays#asList()方法来保存一些行来改进此Java示例。我将再次使用与上一篇文章相同的路径来groovyfy该程序。

代码语言:javascript
复制

package com.fun

import com.fun.frame.httpclient.FanLibrary
import org.slf4j.Logger

class TSSS extends FanLibrary {

    public static Logger logger = getLogger(TSSS.class)

    public static void main(String[] args) {
        List names = new ArrayList()
        names.add("Ted")
        names.add("Fred")
        names.add("Jed")
        names.add("Ned")
        List shortNames = filter(names, 3)
        output shortNames.size()
        for (String s : shortNames) {
            output s
        }
    }

    public static List filter(List strings, int length) {
        List result = new ArrayList()
        for (String str : strings) {
            if (str.length() < length + 1) {
                result.add(str)
            }
        }
        return result
    }

}

与其将类与方法main()一起使用,不如将其转换为脚本,并且还将放弃静态类型信息:

代码语言:javascript
复制

List names = new ArrayList()
names.add("Ted")
names.add("Fred")
names.add("Jed")
names.add("Ned")
List shortNames = filter(names, 3)
println shortNames.size()
for (String s : shortNames) {
    println s
}

def filter(List strings, int length) {
    List result = new ArrayList()
    for (String str : strings) {
        if (str.length() < length + 1) {
            result.add(str)
        }
    }
    return result
}```

无需创建类的实例,我们只需调用`filter()`方法。到目前为止,这些小变化并不是真正的新事物,因为我们之前已经遵循了这些步骤。现在,我们要发现的是,借助`Groovy`列表的本机语法,如何使列表更加友好。那么我们如何定义一个新列表?

`def names = []`

而且,我们可以一次填充一个元素,而不是一次在列表中添加一个元素:

`def names = ["Ted", "Fred", "Jed", "Ned"]`

可以使用下标运算符设置和访问元素:


```Python
            assert names[1] == "Fred"
            names[1] = "Frederic"

Groovy还在列表上添加了一些有用的方法,以简化列表活动,例如枚举元素。Groovy通过“装饰”核心JDK类来做到这一点。列表上添加了两个方便的方法,它们是用于遍历所有元素的each()方法,以及用于查找符合某个条件的所有元素的findAll()方法。

代码语言:javascript
复制
        println names.any {
            it.length() > 3
        }

        println names.every {
            it.length() > 3
        }

        println names.find {
            it.length() > 3
        }
        
        println names.findAll() {
            it.length() > 2
        }

  • 郑重声明:“FunTester”首发,欢迎关注交流,禁止第三方转载。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FunTester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档