Java学习之:ArrayList 集合类学习

ArrayList 和数组的差距

  • ArrayList 集合的长度可以随意变化,但数组的长度设定之后不能变化
  • 对于 数组 这种数据结构来说,打印出来的是地址值;但是对于 ArrayList 集合来说,直接打印的是内容,如果内容是空,那么打印的是空的中括号。
    在这里插入图片描述

ArrayList 的注意事项

在这里插入图片描述

  • ArrayList 在创建的时候,要使用尖括号 <E> 尖括号中的内容是 “泛型”,代表整个 ArrayList 中的元素的类型。

  • 要非常注意的是:泛型 <E> 只能使用引用类型,而不能使用基本数据类型。这是因为集合里面存储的都是地址值,而基本数据类型 int short 等,没有地址值。

  • 从 JDK 1.7 开始,右侧的尖括号中的内容可以省略

  • 这里让我们回顾一下数据类型的知识:

    • byte
    • short
    • int
    • long
    • float
    • double
    • boolean
    • char
  • 引用数据类型:

    • 类:用 class 定义的
    • 接口:List<E> , Map , put
    • 数组:int[] nums;
  • 基本数据类型和引用数据类型的区别:

    • 基本数据类型的创建在栈中
    • 引用数据类型的创建在堆中
    • 栈的空间小并且连续,往往会放在缓存里
  • 由此,如果我们想创建一个 ArrayList 集合来存放 1,23,4 这种数字,应该如何创建呢?答案很简单,如下:
    在这里插入图片描述

  • Interger包装类,而不是基本数据类型,因此,可以通过将泛型指定为 Integer 来将 ArrayList 中放入数字。

  • 基本数据类型和包装类的对应:

    • byte -----> Byte
    • short -----> Short
    • int -----> Integer
    • long -----> Long
    • float -----> Float
    • double -----> Double
    • char -----> Character
    • boolean -----> Boolean
  • 自从 JDK 1.5 以后,支持自动装箱、拆箱:自动装箱就是将基本数据类型打包成包装类,自动拆箱就是将包装类变成基本数据类型;因此可以直接用 int 变量 直接接受 Integer 类的集合中的值。

ArrayList 常用方法

  • add():返回值是布尔型,代表是否添加成功
  • get (index)
  • remove(index):返回值是被删掉的元素
  • size() 获取集合的尺寸长度
    在这里插入图片描述

练习题小试牛刀

题目1:

  • 生成 6 个 1~33 之间的随机整数,添加到集合,并遍历集合

    import java.util.ArrayList;
    import java.util.Random;
    // 题目:生成 6 个 1~33 之间的随机整数,添加到集合,并遍历集合
    public class Practice01 {
        public static void main(String[] args) {
            Random rd = new Random();
            ArrayList<Integer> arr_lst = new ArrayList<>();
            for (int i = 0; i < 6; i++) {
                int number = rd.nextInt(33) + 1;
                arr_lst.add(number);
            }
            // 遍历集合
            System.out.println(arr_lst);
            for (int i = 0; i < arr_lst.size(); i++) {
                System.out.println(arr_lst.get(i));
            }
        }
    }
    
    

题目2:

  • 自定义 3 个学生对象,添加到集合并进行遍历
    • 【创建学生类】

      public class Student {
          private int age;
          private String name;
      
          public Student(int age, String name) {
              this.age = age;
              this.name = name;
          }
      
          public int getAge() {
              return age;
          }
      
          public void setAge(int age) {
              this.age = age;
          }
      
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      
          public Student() {
          }
      }
      
      
    • 【添加到集合并遍历】

      import java.util.ArrayList;
      
      public class Practice02 {
          public static void main(String[] args) {
              Student stu1 = new Student(19,"wang");
              Student stu2 = new Student(20,"li");
              Student stu3 = new Student(29,"fang");
      
              ArrayList<Student> arr_lst = new ArrayList<>();
              arr_lst.add(stu1);
              arr_lst.add(stu2);
              arr_lst.add(stu3);
              
              for (int i = 0; i < arr_lst.size(); i++) {
                  Student temp = arr_lst.get(i);
                  System.out.println(temp.getName()+":"+temp.getAge());
              }
          }
      }
      
      

题目3:

  • 定义以指定格式打印集合的方法(ArrayList 类型作为参数),使用 { } 扩起集合,格式参照:{元素@元素@元素}
  • 集合也是可以作为方法的参数的!
    import java.util.ArrayList;
    
    public class Practice03 {
        public static void main(String[] args) {
            ArrayList<String> arrlst = new ArrayList<>();
            arrlst.add("hehe");
            arrlst.add("xx");
            arrlst.add("wwu");
            printArrayList(arrlst);
        }
        public static void printArrayList (ArrayList<String> arrlst){
            System.out.print("{");		// 不换行
            for (int i = 0; i < arrlst.size(); i++) {
    
                String x = arrlst.get(i);
                if (i == arrlst.size() - 1) {
                    System.out.println(x + "}");	//最后一个元素的话要+}并换行
                } else {
                    System.out.print(x + "@"); //不是最后一个元素不用换行
                }
            }
        }
    }
    

题目4:

  • 用一个大集合存入20个随机数字,然后筛选其中的偶数元素,放到小集合当中

  • 集合类型也可以作为返回类型

    import java.util.ArrayList;
    import java.util.Random;
    
    public class Practice04 {
        public static void main(String[] args) {
            ArrayList<Integer> arrlst = new ArrayList<>();
            ArrayList<Integer> small_lst = new ArrayList<>();
    
            Random rd = new Random();
            for (int i = 0; i < 20; i++) {
                arrlst.add(rd.nextInt());
            }
            small_lst = getSmallArrayList(arrlst);
            System.out.println(small_lst);
        }
        public static ArrayList<Integer> getSmallArrayList(ArrayList<Integer> arrlst){
            ArrayList<Integer> s_lst = new ArrayList<>();
            for (Integer integer : arrlst) {
                    if (integer % 2 == 0) {
                        s_lst.add(integer);
                    }
                }
            return s_lst;
        }
    }
    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值