练习:集合元素处理(传统方式)
现在有两个ArrayList集合存储队伍当中的多个成员姓名,要求使用传统的for循环(或增强for循环)依次进行以下若干操作步骤
1.第一个队伍只要名字为3个字的成员姓名;存储到一个新的集合中。
2.第一个队伍筛选之后只要前三个人;存储到一个新集合中
3.第二个队伍只要姓张的成员姓名;存储到一个新集合中。
4.第二个队伍筛选之后不要前两个人;存储到新集合之中。
5.将两个队伍合并为一个队伍;存储到一个新集合之中
6.根据姓名创建Person对象;存储到一个新集合中。
7.打印整个队伍的Person对象
实现:
//第一个队伍只要名字为3个字的成员姓名;存储到一个新的集合中。 ArrayList<String> one = new ArrayList<>(); one.add("迪丽热巴"); one.add("宋远桥"); one.add("苏星河"); one.add("石破天"); one.add("石中玉"); one.add("老子"); one.add("庄子"); one.add("洪七公"); ArrayList<String> one1 = new ArrayList<>(); for (String name : one) { if (name.length()==3){ one1.add(name); } }
//.第一个队伍筛选之后只要前三个人;存储到一个新集合中。 ArrayList<String> one2 = new ArrayList<>(); for (int i = 0; i < 3; i++) { one2.add(one1.get(i)); }
ArrayList<String> tow = new ArrayList<>(); tow.add("古力娜扎"); tow.add("张无忌"); tow.add("赵丽颖"); tow.add("张三丰"); tow.add("尼古拉斯赵四"); tow.add("张天爱"); tow.add("张二狗"); //第二个队伍只要姓张的成员姓名;存储到一个新集合中。 ArrayList<String> tow1 = new ArrayList<>(); for (String name : tow){ if (name.startsWith("张")){ tow1.add(name); } }
//4.第二个队伍筛选之后不要前两个人;存储到新集合之中。 ArrayList<String> tow2 = new ArrayList<>(); for (int i = 2; i < tow1.size(); i++) { tow2.add(tow1.get(i)); }
//5.将两个队伍合并为一个队伍;存储到一个新集合之中 ArrayList<String> list = new ArrayList<>(); list.addAll(one2); list.addAll(tow2);
//6.根据姓名创建Person对象;存储到一个新集合中。 ArrayList<Person> list1 = new ArrayList<>(); for (String name: list){ list1.add(new Person(name)); }
//7.打印整个队伍的Person对象 for (Person person : list1) { System.out.println(person); }
练习:集合元素处理(Stream方式)
实现:
public static void main(String[] args) { //第一个队伍只要名字为3个字的成员姓名;存储到一个新的集合中。 ArrayList<String> one = new ArrayList<>(); one.add("迪丽热巴"); one.add("宋远桥"); one.add("苏星河"); one.add("石破天"); one.add("石中玉"); one.add("老子"); one.add("庄子"); one.add("洪七公"); //1. 第一个队伍只要名字为3个字的成员姓名;存储到一个新集合中。 //2. 第一个队伍筛选之后只要前3个人;存储到一个新集合中。 Stream<String> oneStream = one.stream().filter(name->name.length()==3).limit(3); ArrayList<String> tow = new ArrayList<>(); tow.add("古力娜扎"); tow.add("张无忌"); tow.add("赵丽颖"); tow.add("张三丰"); tow.add("尼古拉斯赵四"); tow.add("张天爱"); tow.add("张二狗"); //3. 第二个队伍只要姓张的成员姓名;存储到一个新集合中。 //4. 第二个队伍筛选之后不要前2个人;存储到一个新集合中。 Stream<String> towStream = tow.stream().filter(name->name.startsWith("张")).skip(2); //5. 将两个队伍合并为一个队伍;存储到一个新集合中。 //6. 根据姓名创建Person对象;存储到一个新集合中。 //7. 打印整个队伍的Person对象信息。 Stream.concat(oneStream,towStream).map(name->new Person(name)).forEach(p-> System.out.println(p)); }