package com.Lucky.test; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; /** * 练习1: 数据过滤,定义一个Int类型的集合,过滤掉奇数的数据,只留下偶数 */ public class test1 { public static void main(String[] args) { ArrayList<Integer> strInt=new ArrayList<>(); Collections.addAll(strInt,1,2,3,4,5,6,7,8,9,10,12,15); //过滤操作 List<Integer> collect = strInt.stream().filter(val -> val % 2 == 0) .collect(Collectors.toList()); //遍历数据 Iterator<Integer> iterator = collect.iterator(); while (iterator.hasNext()){ System.out.print(iterator.next()+"\t"); } } }
package com.Lucky.test; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; /** * 练习2: 创建一个ArrayList集合,添加字符串,格式是 "唯易,22" * 要求:保留年龄大于或等于25的人,将结果保存到Map集合中【姓名作为键,年龄作为值】 */ public class test2 { public static void main(String[] args) { ArrayList<String> strList=new ArrayList<>(); Collections.addAll(strList,"唯易,22","欣怡,26","维嘉,32","未央,25","Bug,42"); //过滤操作 Map<String, Integer> collect = strList.stream() .filter(val -> Integer.parseInt(val.split(",")[1]) >= 25) .collect(Collectors.toMap(k -> k.split(",")[0], v -> Integer.parseInt(v.split(",")[1]))); System.out.println(collect); //遍历数据 //①keySet Set<String> strings = collect.keySet(); Iterator<String> iterator = strings.iterator(); while (iterator.hasNext()){ String name=iterator.next(); int val=collect.get(name); System.out.println(name+":"+val); } ///②entrySet Set<Map.Entry<String, Integer>> entries = collect.entrySet(); Iterator<Map.Entry<String, Integer>> iter = entries.iterator(); while (iter.hasNext()){ System.out.print(iter.next()+"\t"); } } }
练习3材料:
package com.Lucky.test;
public class Actor {
private String name;
private int age;
public Actor() {
}
public Actor(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Actor{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
package com.Lucky.test; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; /** * 练习3: * 现在有两个ArrayList集合, * 第一个集合中:存储6名男演员的名字和年龄。 * 第二个集合中:存储6名女演员的名字和年龄。 * 姓名和年龄中间用逗号隔开。比如:张三,23 * 要求完成如下的操作:1,男演员只要名字为3个字的前两人 * 2,女演员只要姓杨的,并且不要第一个 * 3,把过滤后的男演员姓名和女演员姓名合并到一起 * 4,将上一步的演员信息封装成Actor对象。 * 5,将所有的演员对象都保存到List集合中。 * 备注:演员类Actor,属性有:name,age */ public class test3 { public static void main(String[] args) { ArrayList<String> ListOne=new ArrayList<>(); Collections.addAll(ListOne,"唯易人生,22","李四时,26","王五嚓,32","陈六狗,25","Bug,42","张三炮,23"); ArrayList<String> ListTwo=new ArrayList<>(); Collections.addAll(ListTwo,"小丽,22","杨欣怡,26","维嘉,32","杨未央,25","小欣,42","杨薇薇,23"); //过滤操作 Stream<String> one = ListOne.stream().filter(name -> name.split(",")[0].length() == 3).limit(2); Stream<String> two = ListTwo.stream().filter(name -> name.split(",")[0].startsWith("杨")).skip(1); System.out.println("---------初级做法-------------"); // Stream<Actor> actorStream = Stream.concat(two, one) // .map(new Function<String, Actor>() { // @Override // public Actor apply(String o) { // String str = o.split(",")[0]; // int val = Integer.parseInt(o.split(",")[1]); // // return new Actor(str, val); // } // }); // List<Actor> collect = actorStream.collect(Collectors.toList()); // System.out.println(collect); System.out.println("---------lamda表达式做法-------------"); Stream<Actor> Stream1 = Stream.concat(one, two).map(val -> new Actor(val.split(",")[0], Integer.parseInt(val.split(",")[1]))); List<Actor> lamdaCollect = Stream1.collect(Collectors.toList()); System.out.println(lamdaCollect); } }标签:name,Stream,流之,练习,collect,val,public,String From: https://www.cnblogs.com/Lucky-only/p/16971021.html