生成流的方式有两种:
stream() − 串行
parallelStream() − 并行
foreach - 循环
@Data
class Student {
private String name;
private Integer cardNo;
}
private void listStudent() {
List names = Arrays.asList("Li", "Lin", "Xiao Bai");
List studentList = new ArrayList<>();
names.forEach(i->addStudent(studentList, i));
studentList.forEach(i->System.out.println("姓名:" + i.getName() + ",学号:" + i.getCardNo()));
}
private void addStudent(List studentList, String name) {
Student student = new Student();
int cardNo = UUID.randomUUID().toString().hashCode();
student.setCardNo(cardNo<0?-cardNo:cardNo);
student.setName(name);
studentList.add(student);
}
map - 元素处理
private void mapStudent() {
String jsonStr = "[{\"name\":\"Li\",\"cardNo\":\"1563729027\"},{\"name\":\"Lin\",\"cardNo\":\"625188409\"},{\"name\":\"Xiao Bai\",\"cardNo\":\"354972723\"}]";
JSONArray jsonArray = JSON.parseArray(jsonStr);
String names = jsonArray.stream().map(i -> ((JSONObject) i).getString("name")).collect(Collectors.joining(","));
System.out.println(names);
}
filter - 条件过滤
private void filterDemo() {
List list = Arrays.asList(1,2,3,4,5);
long count = list.stream().filter(i -> i % 2 == 0).count();
System.out.println("偶数个数:" + count);
}
limit - 条数限定
private void limitDemo() {
// 获取10以内5个不重复的随机数
new Random().ints(0, 10).distinct().limit(5).forEach(System.out::println);
}
sort - 排序
@Data
class Student {
private String name;
private Integer cardNo;
Student(){
}
Student(String name, Integer cardNo) {
this.name = name;
this.cardNo = cardNo;
}
}
private void sortDemo() {
List studentList = new ArrayList<>();
studentList.add(new Student("Li", 9));
studentList.add(new Student("Lin", 3));
studentList.add(new Student("Xiao Bai", 7));
studentList = studentList.stream().sorted(Comparator.comparing(Student::getCardNo).reversed()).collect(Collectors.toList());
System.out.println("学号倒序:");
studentList.forEach(i->System.out.println("姓名:" + i.getName() + ",学号:" + i.getCardNo()));
}
其他
private void otherDemo() {
List list = Arrays.asList(1,2,3,4,5);
IntSummaryStatistics stats = list.stream().mapToInt(i->i*10).summaryStatistics();
System.out.println("最大 : " + stats.getMax());
System.out.println("最小 : " + stats.getMin());
System.out.println("求和 : " + stats.getSum());
System.out.println("平均数 : " + stats.getAverage());
String str = list.stream().mapToInt(i->i).mapToObj(String::valueOf).collect(Collectors.joining(","));
System.out.println("随机数拼串 :" + str);
}
HashMap的遍历
PS:大N年没记住的HashMap遍历,用了java8,我立刻就可以了~
private void hashMapDemo() {
Map map = new HashMap<>();
map.put("name", "Li");
map.put("cardNo", "1");
map.keySet().forEach(i->{System.out.println(i + ":" + map.get(i));});
}
完整示例
package com.example.basedemo.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Author: lmy
* @Date: 2021/2/18 13:07
* @Description:
*/
public class Java8 {
public static void main(String[] arg) {
Java8 java8 = new Java8();
java8.listStudent();
java8.mapStudent();
java8.filterDemo();
java8.limitDemo();
java8.sortDemo();
java8.otherDemo();
java8.hashMapDemo();
}
@Data
class Student {
private String name;
private Integer cardNo;
Student(){
}
Student(String name, Integer cardNo) {
this.name = name;
this.cardNo = cardNo;
}
}
private void sortDemo() {
List studentList = new ArrayList<>();
studentList.add(new Student("Li", 9));
studentList.add(new Student("Lin", 3));
studentList.add(new Student("Xiao Bai", 7));
studentList = studentList.stream().sorted(Comparator.comparing(Student::getCardNo).reversed()).collect(Collectors.toList());
System.out.println("学号倒序:");
studentList.forEach(i->System.out.println("姓名:" + i.getName() + ",学号:" + i.getCardNo()));
}
private void mapStudent() {
String jsonStr = "[{\"name\":\"Li\",\"cardNo\":\"1563729027\"},{\"name\":\"Lin\",\"cardNo\":\"625188409\"},{\"name\":\"Xiao Bai\",\"cardNo\":\"354972723\"}]";
JSONArray jsonArray = JSON.parseArray(jsonStr);
String names = jsonArray.stream().map(i -> ((JSONObject) i).getString("name")).collect(Collectors.joining(","));
System.out.println("学生姓名:" + names);
}
private void listStudent() {
List names = Arrays.asList("Li", "Lin", "Xiao Bai");
List studentList = new ArrayList<>();
names.forEach(i->addStudent(studentList, i));
studentList.forEach(i->System.out.println("姓名:" + i.getName() + ",学号:" + i.getCardNo()));
}
private void addStudent(List studentList, String name) {
Student student = new Student();
int cardNo = UUID.randomUUID().toString().hashCode();
student.setCardNo(cardNo<0?-cardNo:cardNo);
student.setName(name);
studentList.add(student);
}
private void filterDemo() {
List list = Arrays.asList(1,2,3,4,5);
long count = list.stream().filter(i -> i % 2 == 0).count();
System.out.println("偶数个数:" + count);
}
private void limitDemo() {
// 获取10以内5个不重复的随机数
new Random().ints(0, 10).distinct().limit(5).forEach(System.out::println);
}
private void otherDemo() {
List list = Arrays.asList(1,2,3,4,5);
IntSummaryStatistics stats = list.stream().mapToInt(i->i*10).summaryStatistics();
System.out.println("最大 : " + stats.getMax());
System.out.println("最小 : " + stats.getMin());
System.out.println("求和 : " + stats.getSum());
System.out.println("平均数 : " + stats.getAverage());
String str = list.stream().mapToInt(i->i).mapToObj(String::valueOf).collect(Collectors.joining(","));
System.out.println("随机数拼串 :" + str);
}
private void hashMapDemo() {
Map map = new HashMap<>();
map.put("name", "Li");
map.put("cardNo", "1");
map.keySet().forEach(i->{System.out.println(i + ":" + map.get(i));});
}
}