package Day03;
import com.sun.jdi.Value;
import java.util.ArrayList;
public class StreamTest01 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");
list.add("张强");
list.add("张三丰");
//要求:所有以张开头的存到一个新集合中
//要求:遍历打印结果
ArrayList<String> list1 = new ArrayList<>();
for (String s : list) {
if(s.charAt(0)=='张'){
list1.add(s);
}
}
for (String s : list1) {
System.out.println(s);
}
System.out.println("=======================");
//要求:把张开头,长度为3的元素存到一个新集合
//要求:遍历打印结果
ArrayList<String> list2 = new ArrayList<>();
for (String s : list) {
if(s.charAt(0)=='张'&&s.length()==3){
list2.add(s);
}
}
for (String s : list2) {
System.out.println(s);
}
System.out.println("=======================");
//Stream流
list.stream().filter(a->a.charAt(0)=='张').filter(b->b.length()==3).forEach(c-> System.out.println(c));
}
}



单列集合:
package Day03;
import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.Collections;
import java.util.stream.Stream;
public class StreamTest02 {
public static void main(String[] args) {
//创建单列集合
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, "a", "b", "c", "d", "e", "f", "g", "h");
//获取stream流
//获取到一条流水线,并把集合上的数据放到流水线上
Stream<String> stream1 = list.stream();
//使用终结方法,打印流水线上所有的数据
stream1.forEach(s-> System.out.print(s+","));
//stream流编程中,一般会使用链式编程
list.stream().forEach(s-> System.out.println(s));
}
}
双列集合:
package Day03;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class StreamTest03 {
public static void main(String[] args) {
//创建一个双列集合
HashMap<Integer, String> hash = new HashMap<>();
//
hash.put(1,"a");
hash.put(2,"b");
hash.put(3,"c");
hash.put(4,"d");
hash.put(5,"e");
//双列集合如果要使用stream流,先要变成单列集合
Set<Map.Entry<Integer, String>> entries = hash.entrySet();
entries.stream().forEach(s->{if(s.getKey()==1){
System.out.println(s.getKey()+","+s.getValue());
}});
//
}
}
数组:
package Day03;
import java.util.Arrays;
public class StreamTest04 {
public static void main(String[] args) {
String[] arr=new String[3];
arr[0]="a";
arr[1]="b";
arr[2]="c";
//stream流
Arrays.stream(arr).forEach(s-> System.out.println(s));
}
}

Stream流中的中间方法









Stream流中的终结方法

package Day03;
import java.util.*;
import java.util.stream.Collectors;
public class StreamTest06 {
public static void main(String[] args) {
/*
* 集合中的终结方法
* 1、遍历foreach
* 2、统计
* 3、收集(可以收集到集合中或者收集到数组中)*/
//遍历:
ArrayList<String> st = new ArrayList<>();
Collections.addAll(st,"张三丰","张三丰","赵六","张无忌","张翠山","张大炮","张三","李四","王五");
//foreach遍历后打印
st.stream().forEach(s-> System.out.println(s));
//count 计数
long count = st.stream().count();
System.out.println(count);
//System.out.println(st.size());
//收集
//toArray():把流里面的数据收集到数组中
String[] arr=new String[st.size()];
//Object[] array = st.stream().toArray();
//System.out.println(Arrays.toString(array));
System.out.println("====================================");
String[] array = st.stream().toArray(value -> new String[value]);
System.out.println(Arrays.toString(array));
//collect 收集流中的数据,放到集合中(List,Set,Map)
ArrayList<String> st1 = new ArrayList<>();
Collections.addAll(st1,"张三丰-男-16","张四丰-男-17","赵六-女-18","张无忌-男-17","张翠山-男-19","张大炮-女-20");
//把st1中的全部男生都收集到List
List<String> newlist = st1.stream()
.filter(s -> "男".equals(s.split("-")[1]))
.collect(Collectors.toList());
System.out.println(newlist);
System.out.println("====================================");
//收集到set集合(注意:如果收集到set集合,会去重)
Set<String> newset = st1.stream().filter(s -> s.split("-")[1].equals("男"))
.collect(Collectors.toSet());
System.out.println(newset);
//收集到Map集合
//键:姓名,值:年龄
Map<String, Integer> collect = st1.stream().filter(s -> "男".equals(s.split("-")[1]))
.collect(Collectors.toMap(s -> s.split("-")[0], s -> Integer.parseInt(s.split("-")[2])));
System.out.println(collect);
}
}
