2017 年 04 月 - 3 文章

Java 8 过滤两个list的相同项

  |   0 评论   |   0 浏览

假如有两个list,list1=[1, 2, 4, 5],list2=[2, 4, 6, 7],求相同项 方法一 List<Integer> availablePoiList = requestPoiList.stream().filter(requestPoi -> memberPoiIdList.stream().anyMatch(availablePoi -> availablePoi.equals(requestPoi))).collect(Collectors.toList()); 方法二 List<Integer> availablePoiList = requestPoiList.stream().filter(memberPoiIdList::contains).collect(Collectors.toList()); 第二种方法简洁了很多,刚开始不会用lambda,写出来比较长,后面找到了contains方法。

Groovy 元对象协议Mop(一)

  |   0 评论   |   0 浏览

在java中,我们可以在运行时探索程序的结构,以及程序的类和方法,方法接收的参数等。然后我们仍然局限于所创建的静态结构,我们无法在运行时修改一个对象的类型,或是让他动态获取行为。如果我们可以基于应用当前的输入,动态的添加方法和行为,代码会变得更加灵活。我们的创造力和开发效率将大大提升。那么,Groovy就提供了这种功能。 概念 元编程(metaprogramming)意味着编写能够操作程序的程序。包括程序自身。像Groovy这样的动态语言通过元对象协议(MetaObject Protocol, MOP),提供了这种能力。 利用MOP能够干什么呢 利用Groovy的MOP,创建类、编写单元测试和引入模拟对象都很容易。 在groovy中,利用MOP可以动态的调用方法,甚至在运行时合成类和方法。这种特性给我们的感觉就是对象顺利的修改了他的类。比如Grails和GORM就使用了该特性,为数据查询合成方法,借助Mop,在Groovy中可以创建内部的领域特定语言。 这篇文章我们先讨论Groovy对象的组成。 Groovy对象的组成 Groovy对象是带有附加功能的Java对象。在Groovy中,G....

zsh + iterm 插件安装

  |   0 评论   |   0 浏览

前言 iterm 默认的主题有点无趣,也没有自动提示。不好用。通过安装插件让iterm丰富起来。 安装zsh 使用这个命令可以看到你的系统有几个shell cat /etc/shells 回显是这个 /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh 有zsh就不用安装了,直接用下面的命令设置默认shell就行 chsh -s /bin/zsh 然后直接打开新的terminal就行了 zsh的配置文件在这里:~/.zshrc 直接打开没啥东西的,需要用这个oh my zsh来调教: sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 执行命令如果遇到错误 Failed to connect to raw.githubusercontent.com port 443: Connection refused 按这个链接处理 解决homebrew安装curl: (7) Failed to connect....