练习:集合元素处理(传统方式)
题目
现在有两个ArrayList集合存储队伍当中的多个成员姓名,要求使用传统的for循环(或增强for循环
依次进行以下若干操作步骤︰
1.第一个队伍只要名字为3个字的成员姓名﹔存储到一个新集合中。
2.第一个队伍筛选之后只要前3个人;存储到一个新集合中。
3.第二个队伍只要姓张的成员姓名;存储到一个新集合中。
4.第二个队伍筛选之后不要前2个人﹔存储到一个新集合中。
5.将两个队伍合并为一个队伍;存储到一个新集合中。
6.根据姓名创建Person对象;存储到一个新集合中。
7.打印整个队伍的Person对象信息。
两个对象(集合)的代码如下:
package A_Lian_two.D05; import java.util.ArrayList; public class Demo01StreamTest { public static void main(String[] args) { //第一支队伍 ArrayList<String> one = new ArrayList<>(); one.add("迪丽热巴"); one.add("asdf"); one.add("xcvz"); one.add("wear"); one.add("qwe"); one.add("cxv"); //第一队伍只要名字为3个字的成员姓名,存储到一个新集合中 ArrayList<String> one1 = new ArrayList<>(); for (String name : one) { if (name.length()==3){ one1.add(name); } } System.out.println(one1); ArrayList<String> one2 = new ArrayList<>(); //第一队伍筛选之后只要前3个人;存储到一个新集合中 for (int i = 0; i < 3; i++) { one2.add(one.get(i)); } System.out.println(one2); //第二支队伍 ArrayList<String> two = new ArrayList<>(); two.add("古力娜扎"); two.add("阿斯蒂芬"); two.add("adsf"); two.add("自行车v给"); two.add("we热情啊"); two.add("a速度"); //第二支队伍只要有a的成员 ArrayList<String> two1 = new ArrayList<>(); for (String name : two) { if (name.startsWith("a")){ two1.add(name); } } // System.out.println(two1); //第二个队伍筛选之后不要前2个人,存储到一个新集合中 ArrayList<String> two2 = new ArrayList<>(); for (int i = 2; i < two1.size(); i++) { two2.add(two1.get(i));//不包含0 1 } //将两个队伍合并到一个队伍中 ArrayList<String> all = new ArrayList<>(); all.addAll(one2); all.addAll(two2); //根究姓名创建Person对象,存储到一个新集合中. ArrayList<Person> list = new ArrayList<>(); for (String name : all) { list.add(new Person(name)); } //打印 for (Person name : list) { System.out.println(name); } } }
练习:集合元素处理(Stream方式)
题目
将上一题当中的传统for循环写法更换为Stream流式处理方式。两个集合的初始内容不变,Person类的定义也不变。
解答
等效的Stream流式处理代码为︰
//stream方法 Stream<String> oneStream = one.stream().filter(name -> name.length() == 3).limit(3); Stream<String> twostream = two.stream().filter(name -> name.startsWith("a")).skip(2); Stream.concat(oneStream,twostream).map(name->new Person(name)).forEach(p-> System.out.println(p));
原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/278403.html