首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
拉勾
V2EX  ›  Java

这段代码怎么能不那么丑陋

  •  
  •   qwertyegg · 80 天前 · 2872 次点击
    这是一个创建于 80 天前的主题,其中的信息可能已经有所发展或是发生改变。
    public static void main(String[] args){
    List<String> languages = Arrays.asList("Java", "Scala", "C++", "Haskell", "Lisp");
    filter(languages, (str)->((String)str).length() > 4);
    }

    static void filter(List<String> names, Predicate condition) {
    for(String name: names) {
    if(condition.test(name)) {
    System.out.println(name + " ");
    }
    }
    }


    第 3 行里面的 Lambda 表达式,如果不做强制转换似乎 str 会被认为是个 Object 而不是 String。可是这个强制转换太丑了,有没有优雅的处理方法?

    update:

    知道问题了, filer 方法里面应该给 Predicate 指定类型,改成这样
    static void filter(List<String> names, Predicate<String> condition) {
    for(String name: names) {
    if(condition.test(name)) {
    System.out.println(name + " ");
    }
    }
    }
    13 回复  |  直到 2018-12-28 16:49:03 +08:00
        1
    liuhuansir   80 天前 via iPhone
    filter 需要自己实现么?很久没写 Java 了,jdk 里没有么?难怪说 Java 语言啰嗦
        2
    lhx2008   80 天前 via Android
    @liuhuansir 不用,只是楼主搞的不知道啥玩意
        3
    lhx2008   80 天前 via Android   ♥ 1
    languages.stream().filter(str->str.length>4).forEach(System.out::println);
        4
    yxlaisj   80 天前 via Android
    也许楼主用的是 java7
        5
    liaojl   80 天前 via Android
    你都知道 lambda 了,竟然不知道 stream 吗。。。
        6
    anthow   80 天前
    @yxlaisj 7 没有 Predicate 吧
        7
    zydxn   80 天前
    languages.stream().filter(x -> x.length() > 4).forEach(System.out::println);
        8
    zydxn   80 天前
    @zydxn 啊 没注意 3#发过了
        9
    sagaxu   80 天前 via Android
    val languages = arrayOf("Java", "Scala", "C++", "Haskell", "Lisp")
    languages.filter{it.length>4}.forEach(println)

    Kotlin 欢迎你
        10
    Marstin   80 天前
    在¿为什么不用 markdown¿
        11
    wleexi   80 天前
    @Marstin 同感。甚至发个 gayhub 的外链都好啊。。
        12
    galikeoy   80 天前
    @Marstin 看着辣眼睛啊
        13
    geying   80 天前
    缩进一下
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   818 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 16ms · UTC 20:10 · PVG 04:10 · LAX 13:10 · JFK 16:10
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1