根据情况进行创建和遍历:
/*需求:按照下面的要求完成集合的创建和遍历 1.创建一个集合,存储多个字符串元素 2.把集合中所有以“张”开头的元素存储到一个新的集合 3.把“张”开头的集合中的长度为3的元素存储到一个新的集合 4.遍历上一步得到的集合 */
import java.util.ArrayList;
/*需求:按照下面的要求完成集合的创建和遍历
1.创建一个集合,存储多个字符串元素
2.把集合中所有以“张”开头的元素存储到一个新的集合
3.把“张”开头的集合中的长度为3的元素存储到一个新的集合
4.遍历上一步得到的集合
*/
public class streamDemo {
public static void main(String[] args) {
//建立一个集合,存储多个字符串元素
ArrayList<String> list = new ArrayList<String>();
list.add("王剑波");
list.add("张曼玉");
list.add("张益达");
list.add("张无");
list.add("王祖贤");
//把集合中所有以“张”开头的元素存储到一个新的集合
ArrayList<String> zhanglist = new ArrayList<String>();
for(String s : list){
if(s.startsWith("张")){
zhanglist.add(s);
}
}
// System.out.println(zhanglist);
//把“张”开头的集合中的长度为3的元素存储到一个新的集合
ArrayList<String> thlist = new ArrayList<String>();
for(String s : zhanglist){
if(s.length() == 3){
thlist.add(s);
}
}
// System.out.println(thlist);
//4.遍历上一步得到的集合
for(String s : thlist){
System.out.println(thlist);
}
System.out.println("--------");
//Stream流进行以上步骤简化
list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length() ==3).forEach(s -> System.out.println(s));
//对上式再进行改进
list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length() ==3).forEach(System.out ::println);
}
}
再通过filter方法进行改进:
/*Stream<T> filter(Predicate predicate):用于对流中的数据进行过滤 Predicate接口中的方法boolean test(T t):给定的参数进行判断,返回一个布尔值 */
import org.w3c.dom.ls.LSOutput;
import java.sql.SQLOutput;
import java.util.ArrayList;
/*Stream<T> filter(Predicate predicate):用于对流中的数据进行过滤
Predicate接口中的方法boolean test(T t):给定的参数进行判断,返回一个布尔值
*/
public class StreamDemo01 {
public static void main(String[] args) {
//创建一个集合,存储多个字符串元素
ArrayList<String> list = new ArrayList<String>();
list.add("林青霞");
list.add("张曼玉");
list.add("张无忌");
list.add("张敏");
//需求1:将list集合以张开头的元素再控制台输出
list.stream().filter((String s) -> {
return s.startsWith("张");
}).forEach(System.out::println);
list.stream().filter(s -> s.startsWith("张")).forEach(System.out::println);
System.out.println("-----------");
//需求2:把list集合中长度为3的元素在控制台输出
list.stream().filter(s -> s.length() ==3).forEach(System.out::println);
System.out.println("--------------");
//需求3:把list集合中以张开头的,长度为3的元素在控制台输出
list.stream().filter(s ->s.startsWith("张")).filter(s ->s.length() ==3).forEach(System.out::println);
}
}
学习B站黑马程序员,此只作为学习笔记