本套JAVA8教程由于是有英文翻译过来的,如果有翻译不对的地方还请多多包涵。
本节课先简单的介绍下Java8有哪些新特性,对于Java6/7版本做出哪些更改.那废话不多说,赶紧开始今天的课程吧.
上一篇文章中还没有回过神的同学醒醒了,这里要详细介绍map函数咯
将List中里面的字符转换成大写字母
在 Java 8里面stream().map() 允许你把 object 转化成其他对象. 一起看下例子吧
public static void main(String[] args) {
List<String> alpha = Arrays.asList("a", "b", "c", "d");
//Java8 之前的操作
List<String> alphaUpper = new ArrayList<>();
for (String s : alpha) {
alphaUpper.add(s.toUpperCase());
}
System.out.println(alpha); //[a, b, c, d]
System.out.println(alphaUpper); //[A, B, C, D]
// Java 8 里面的操作
List<String> collect = alpha.stream().map(String::toUpperCase).collect(Collectors.toList());
System.out.println(collect); //[A, B, C, D]
// 另外, streams 允许你做任意的转化.
List<Integer> num = Arrays.asList(1,2,3,4,5);
List<Integer> collect1 = num.stream().map(n -> n * 2).collect(Collectors.toList());
System.out.println(collect1); //[2, 4, 6, 8, 10]
}
上面的这一波操作是不是很秀, 其实并不难, 手把手在idea中敲一下你就会明白了. 代码还是要多写
从对象List 获取字符 List
这里还继续试用User对象吧,我比较懒
public class User {
private String name;
private int age;
private BigDecimal salary;
// ....
}
public static void main(String[] args) {
List<User> userList = Arrays.asList(
new User("张三", 30,new BigDecimal(10000)),
new User("李四", 20,new BigDecimal(20000)),
new User("Enoch", 40,new BigDecimal(30000))
);
//在 Java 8 之前
List<String> result = new ArrayList<>();
for (User x : userList) {
result.add(x.getName());
}
System.out.println(result); //[张三, 李四, Enoch]
//Java 8
List<String> collect = userList.stream().map(x ->x.getName()).collect(Collectors.toList());
//List<String> collect = userList.stream().map(User::getName).collect(Collectors.toList());
System.out.println(collect); //[张三, 李四, Enoch]
}
objects List转化为 其他 objects List
这个例子展示如何将一个 User 对象 List 转化为一个 UserPublic 对象List.
public class User {
private String name;
private int age;
private BigDecimal salary;
// ....
}
public class UserPublic {
private String name;
private int age;
private String extra;
//...
}
我们先看看java8之前怎么做吧,废话不多说 直接上代码
public static void main(String[] args) {
List<User> userList = Arrays.asList(
new User("张三", 30,new BigDecimal(10000)),
new User("李四", 20,new BigDecimal(20000)),
new User("Enoch", 40,new BigDecimal(30000))
);
List<UserPublic> result = convertToStaffPublic(userList);
System.out.println(result);
}
private static List<UserPublic> convertToStaffPublic(List<User> userList) {
List<UserPublic> result = new ArrayList<>();
for (User temp : userList) {
UserPublic obj = new UserPublic();
obj.setName(temp.getName());
obj.setAge(temp.getAge());
obj.setExtra(temp.getSalary().toString());
result.add(obj);
}
return result;
}
这代码写的是不是都快恶心死了,好烦的代码啊,怪不得头发掉那么厉害呢,
OK那赶紧看看java8的写法吧
public static void main(String[] args) {
List<User> userList = Arrays.asList(
new User("张三", 30,new BigDecimal(10000)),
new User("李四", 20,new BigDecimal(20000)),
new User("Enoch", 40,new BigDecimal(30000))
);
// convert inside the map() method directly.
List<UserPublic> result = userList.stream().map(temp -> new UserPublic(temp.getName(),temp.getAge(),temp.getName())).collect(Collectors.toList());
System.out.println(result);
}
哈哈 是不是爽的一批啊. 很清爽吧, 小伙伴们赶紧试试吧. 好好写代码 就是头有点凉啊..
欢迎小伙伴们踊跃留言呢!!!
网友评论