最近的两个项目中都使用了Streams函数(暂且这么叫,这里不想说到函数式编程),一个使用了Java8,另外的是Kotlin,做一下简单的笔记。

使用Java8

1. 安装JDK 8 

2. 配置工程,使用Java 8编译工程,在app/build.gradle中添加:

android {    compileOptions {        sourceCompatibility JavaVersion.VERSION_1_8        targetCompatibility JavaVersion.VERSION_1_8    }}

3. 使用Lambda。RetroLambda帮助我们把Lambda表达式转为Java 6可以运行的字节码,在build.gradle中配置RetroLambda:

buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'me.tatarka:gradle-retrolambda:3.2.3'        classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2'    }    configurations.classpath.exclude group: 'com.android.tools.external.lombok'}

4. 使用Streams,引入了一个开源库Lightweight-Stream-API。这个库可以在Java 6的环境运行,但是如果没有Lambda,代码中的匿名类和回调会显得十分臃肿和笨拙。下面是引入这个库的配置,在app/build.gradle中添加依赖:

dependencies {    compile 'com.annimon:stream:1.0.3'}

OK,齐活,show个Demo:

    String[] names = new String[] {            "Amy", "Alex", "Bob", "Cindy", "Jeff", "Jack",            "Sunny", "Sara", "Steven"    };    //筛选S开头的人名    Stream.of(names)            .filter(name -> name.startsWith("s"))            .collect(Collectors.toList());    //按首字母分组并排序    List>> group = Stream.of(names)            .groupBy(name -> String.valueOf(name.charAt(0)))            .sortBy(Map.Entry::getKey)            .collect(Collectors.toList());

Kotlin

Kotlin,JetBrains开发的一种语言,语法个人感觉和C#很相似,现在还是Beta版本,能不能火起来真不好说。不过好多的开源库已经有Kotlin的实现了。Android开发的配置也很简单,Android Studio安装一个Kotlin插件就好了。这是官网的指南:Getting started with Android and Kotlin。下面是我的项目的配置:

app/build.gradle

apply plugin: 'kotlin-android'android {    sourceSets {        main.java.srcDirs += 'src/main/kotlin'    }}dependencies {    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"}buildscript {    ext.kotlin_version = '1.0.0-beta-4584'    repositories {        jcenter()    }    dependencies {        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"    }}
目录结构:


kotlin目录下都是.kt文件,这样就可以混合使用Java和Kotlin了。简单的例子:

    val names = arrayOf("Amy", "Alex", "Bob", "Cindy", "Jeff", "Jack", "Sunny", "Sara", "Steven")    //筛选S开头的人名    val sName = names.filter { it.startsWith("S") }.toList()    //按首字母分组并排序    val nameGroup = names.groupBy { it[0] }            .toSortedMap( Comparator { key1, key2 -> key1.compareTo(key2) })

更多相关文章

  1. 将Android封装库通过gradle部署到maven私服并依赖使用
  2. Android(安卓)4编程入门经典—开发智能手机与平板电脑应用
  3. Android(安卓)图形学原理之OpenGL ES
  4. Android之使用串口通信及协议解析
  5. Android中Gzip使用
  6. Android(安卓)Java执行Shell命令
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. Android(安卓)SDK 国内镜像
  2. 玩转Jenkins - Android发布自动版本号
  3. 关于android:configChanges="keyboardHid
  4. 1 mkfile
  5. Android(安卓)源码查看
  6. Android蓝牙操作
  7. Android(安卓)性能优化之数据库优化(一)
  8. Android(安卓)呼吸灯流程分析(一)
  9. [Android进阶笔记]XML相关——Selector、
  10. Android(安卓)4.4KitKat AudioRecord 流