0
点赞
收藏
分享

微信扫一扫

增强for循环 集合嵌套

非衣所思 2022-02-20 阅读 118
p2plinqc#

目录

增强for循环

格式

增强for循环特点及优缺点

简化数组遍历

简化集合遍历

ArrayList存储自定义对象并使用增强for遍历

可变参数

可变参数概述

格式

Arrays工具类的asList()方法的使用

集合嵌套


增强for循环

格式

增强for循环特点及优缺点

1)简化了遍历的方法;

2)增强for循环的目标要判断是否为null;

3)增强for循环在迭代集合的中途,不能增删元素,否则会报并发修改异常。

简化数组遍历

 public class Test {
     public static void main(String[] args) {
         int[] arr = {21, 54, 224, 2, 16, 123, 54};
         for (int i : arr) {
             System.out.print(i+" ");
         }
     }
 }

简化集合遍历

 import java.util.ArrayList;
 import java.util.Collection;
 ​
 public class Test2 {
     public static void main(String[] args) {
         Collection<Integer> list = new ArrayList<>();
         list.add(12);
         list.add(19);
         list.add(78);
         list.add(15);
         list.add(112);
         list.add(56);
         list.add(15);
         for (Integer ele : list) {
             System.out.print(ele+" ");
         }
     }
 }

ArrayList存储自定义对象并使用增强for遍历

 //自定义对象Student
 public class Student {
     private String name;
     private int age;
 ​
     public Student(String name, int age) {
         this.name = name;
         this.age = age;
     }
 ​
     @Override
     public String toString() {
         return "Student{" +
                 "name='" + name + '\'' +
                 ", age=" + age +
                 '}';
     }
 }
 ​
 //测试类
 import java.util.ArrayList;
 ​
 public class Test3 {
     public static void main(String[] args) {
         ArrayList<Student> list = new ArrayList<>();
         list.add(new Student("Alice",18));
         list.add(new Student("Helen", 19));
         list.add(new Student("Jack", 20));
 ​
         for (Student student : list) {
             System.out.println(student.toString());
         }
     }
 }

可变参数

可变参数概述

当我们在定义方法的时候,不知道该定义多少个参数时,我们就需要可变参数来帮助我们。

格式

注意

1)这里的变量其实是一个数组

2)如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个。

例如

案例:求数组中所有元素之和,需使用可变参数

 public class Test4 {
     public static void main(String[] args) {
         int[] arr = {21, 54, 224, 2, 16, 123, 54};
         int add = add(arr);
         System.out.println(add);
     }
     //定义有可变长参数的add()方法,来获取元素之和
     public static int add(int... arr) {
         int sum = 0;
         for (int i : arr) {
             sum += i;
         }
         return sum;
     }
 }

Arrays工具类的asList()方法的使用

该方法的作用是将数组转换为集合,但是,通过此方法得到的集合长度是不可变的,即不能对集合进行增删操作,只能获取元素。

代码实现

 import java.util.Arrays;
 import java.util.List;
 ​
 public class Test6 {
     public static void main(String[] args) {
         //定义一个String类型的数组
         String[] strings = {"one", "two", "three", "four", "five", "six"};
         //将定义好的String数组当做参数整体传进去
         List<String> list = Arrays.asList(strings);
         //list即为获得的集合
     }
 }

集合嵌套

ArrayList嵌套ArrayList

定义Student类,定义成员变量name和age,重写toString()方法,满足输出的格式。

 public class Student {
     private String name;
     private int age;
 ​
     public Student(String name, int age) {
         this.name = name;
         this.age = age;
     }
 ​
     @Override
     public String toString() {
         return "\""+this.name+
                 "\""+","+this.age ;
     }
 }
 import java.util.ArrayList;
 import java.util.function.Consumer;
 ​
 public class Test7 {
     public static void main(String[] args) {
         ArrayList<Student> studentArrayList1 = new ArrayList<>();
         studentArrayList1.add(new Student("s11", 18));
         studentArrayList1.add(new Student("s12", 19));
         ArrayList<Student> studentArrayList2 = new ArrayList<>();
         studentArrayList2.add(new Student("s21", 20));
         studentArrayList2.add(new Student("s22", 19));
         ArrayList<Student> studentArrayList3 = new ArrayList<>();
         studentArrayList3.add(new Student("s31", 18));
         studentArrayList3.add(new Student("s32", 20));
 ​
         ArrayList<ArrayList<Student>> classArrayList = new ArrayList<>();
         classArrayList.add(studentArrayList1);
         classArrayList.add(studentArrayList2);
         classArrayList.add(studentArrayList3);
 ​
         classArrayList.forEach(new Consumer<ArrayList<Student>>() {
             @Override
             public void accept(ArrayList<Student> students) {
                 System.out.println();
                 students.forEach(new Consumer<Student>() {
                     @Override
                     public void accept(Student student) {
                         System.out.println(student.toString());
                     }
                 });
             }
         });
     }
 }
举报

相关推荐

0 条评论