Ejercicio: Conjunto de elementos de procesamiento (método tradicional)
problema
. Hay dos conjuntos de ArrayList para almacenar los nombres de varios miembros en el equipo tradicional para el bucle (o bucle for mejorado) que se requiere para llevar a cabo los siguientes pasos en secuencia.:
- El primer equipo solo necesita un nombre de miembro de 3 caracteres; se almacena en un nuevo conjunto.
- Solo se requieren las primeras 3 personas después de que se selecciona el primer equipo; se almacenan en un nuevo conjunto.
- El segundo equipo solo necesita el nombre del miembro cuyo apellido es Zhang; se almacena en un nuevo conjunto.
- Después de seleccionar el segundo equipo, no tenga a las 2 primeras personas; guárdelas en un nuevo conjunto.
- Combine dos equipos en un equipo; almacene en un nuevo conjunto.
- Cree un objeto Person basado en el nombre; guárdelo en una nueva colección.
- Imprime la información del objeto Persona de todo el equipo.
Código:
public static void main(String[] args) {
//第一支队伍
ArrayList<String> one = new ArrayList<>();
one.add("迪丽热巴");
one.add("宋远桥");
one.add("苏星河");
one.add("石破天");
one.add("石中玉");
one.add("老子");
one.add("庄子");
one.add("洪七公");
//第二支队伍
ArrayList<String> two = new ArrayList<>();
two.add("古力娜扎");
two.add("张无忌");
two.add("赵丽颖");
two.add("张三丰");
two.add("尼古拉斯赵四");
two.add("张天爱");
two.add("张二狗");
//第一个队伍只要名字为3个字的成员姓名
List<String> one1 = new ArrayList<>();
for (String name : one) {
if (name.length()==3){
one1.add(name);
}
}
//第一个队伍筛选之后只要前3个人
List<String> one2 = new ArrayList<>();
for (int i = 0; i < 3; i++) {
one2.add(one1.get(i));
}
//第二个队伍只要姓张的成员姓名
List<String> two1 = new ArrayList<>();
for (String name : two) {
if (name.startsWith("张")){
two1.add(name);
}
}
//第二个队伍筛选之后不要前2个人
List<String> two2 = new ArrayList<>();
for (int i = 1; i < two1.size(); i++) {
two2.add(two1.get(i));
}
//将两个队伍合并为一个队伍;存储到一个新集合中
List<String> all = new ArrayList<>();
all.addAll(one2);
all.addAll(two2);
//根据姓名创建 Person 对象;存储到一个新集合中
List<Person> person = new ArrayList<>();
for (String name : all) {
person.add(new Person(name));
}
//打印整个队伍的Person对象信息。
for (Person person1 : person) {
System.out.println(person1);
}
}
}
El código de la clase Person es:
public class Person {
private String name;
public Person() {
}
public Person(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Demostración del programa:
Optimización de la transmisión de secuencias:
Código:
public class Demo02StreamTest {
public static void main(String[] args) {
//第一支队伍
ArrayList<String> one = new ArrayList<>();
one.add("迪丽热巴");
one.add("宋远桥");
one.add("苏星河");
one.add("石破天");
one.add("石中玉");
one.add("老子");
one.add("庄子");
one.add("洪七公");
//第二支队伍
ArrayList<String> two = new ArrayList<>();
two.add("古力娜扎");
two.add("张无忌");
two.add("赵丽颖");
two.add("张三丰");
two.add("尼古拉斯赵四");
two.add("张天爱");
two.add("张二狗");
//第一个队伍只要名字为3个字的成员姓名
//第一个队伍筛选之后只要前3人
Stream<String> stream1 = one.stream().filter(s -> s.length() == 3).limit(3);
//第二个队伍只要姓张的成员姓名
//第二个队伍筛选之后不要前2个人
Stream<String> stream2 = two.stream().filter(s -> s.startsWith("张")).skip(2);
//将两个队伍合并为一个队伍
//根据姓名创建Person对象
//打印整个队伍的Person对象信息
Stream.concat(stream1,stream2).map(name->new Person(name)).forEach(person-> System.out.println(person));
}
}
Demostración del programa: