一、版本支持
官方介绍地址
AGP4.0开始支持使用多种 Java 8 语言 API,而无需为应用设置最低 API 级别。
新版支持如下Api,我们介绍Stream的使用
- 顺序流 (java.util.stream)
- java.time 的子集
- java.util.function
- java.util.{Map,Collection,Comparator} 的最近新增内容
- 可选内容(java.util.Optional、java.util.OptionalInt 和 java.util.OptionalDouble)以及对上述 API 很有用的一些其他新类
- java.util.concurrent.atomic 的一些新增内容(AtomicInteger、AtomicLong 和 AtomicReference 的新方法)
ConcurrentHashMap(包含 Android 5.0 的问题修复)
二、配置
在应用模块的 build.gradle
文件中添加以下代码
android {
defaultConfig {
// Required when setting minSdkVersion to 20 or lower
multiDexEnabled = true
}
compileOptions {
// Flag to enable support for the new language APIs
isCoreLibraryDesugaringEnabled = true
// Sets Java compatibility to Java 8
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
}
dependencies {
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.0.4")
}
三、使用方法
参考链接:https://blog.csdn.net/weiqiang915/article/details/107209981/
//五个user对象
User user1 = new User(1, "张三", 10);
User user2 = new User(2, "李四", 15);
User user3 = new User(3, "王五", 20);
User user4 = new User(4, "赵六", 25);
User user5 = new User(5, "严七", 30);
//将User对象存入list
List<User> userList = new ArrayList<>();
userList.add(user1);
userList.add(user2);
userList.add(user3);
userList.add(user4);
userList.add(user5);
//1.stram()方法:将集合装为流
Stream<User> stream = userList.stream();
//2.collect()方法:将流转为集合
List<User> users = userList.stream().collect(Collectors.toList());
//3.filter()方法:过滤元素
List<User> userList1 = userList.stream()
.filter(user -> user.getAge() > 20)//过滤出年龄大于20的use
.collect(Collectors.toList());//将流转回集合
//4.map()方法:将每个元素映射成新元素
List<User> userList2 = userList.stream().filter(user -> user.getAge() > 20)
.map(user -> {
user.setAge(50);//将过滤得到的user对象的年龄设置为50
return user;
})
.collect(Collectors.toList());//将流转为集合
//5.limit(n):获取n个元素
List<User> userList3 = userList.stream().limit(3).collect(Collectors.toList());
//6.skip(n):跳过n元素
List<User> userList4 = userList.stream().skip(2).collect(Collectors.toList());
//7.distinct:去除重复元素
userList.add(user5);
List<User> userList6 = userList.stream().distinct().collect(Collectors.toList());