ArrayList

ArrayList类概念

java.util. ArrayList是大小可变的数组的实现,存储在内的数据称为元素。此类提供-些方法来操作内部存储的元索。
Arraylist中可不断添加元素,其大小也自动增长。

ArrayList使用步骤

查看类

●java.util.ArrayList :该类需要import导入使后使用。
, 表示一种指定的数据类型,叫做泛型。E,取自Element (元素)的首字母。在出现E的地方,我们使用
一种引用数据类型将其替换即可, 表示我们将存储哪种弓|用类型的元素。

代码如下:

  1. Arraylist<String>
  2. ArrayList<Student>

查看构造方法

●public ArrayList() :构造一个内容为空的集合。
基本格式:

  1. ArrayList<String> list = new ArrayList<String>();

在JDK 7后,右侧泛型的尖括号之内可以留空,但是<>仍然要写。简化格式:

  1. ArrayList<String> list = new ArrayList<>();

简单介绍

数组的长度不可以发生改变。
但是Arraylist集合的长度是可以随意变化的。
对于Arraylist来说,有一个尖括号代表泛型。
泛型:也就是装在集合当中的所有元素,全都是统-的什么类型。
注意:泛型只能是引用类型,不能是基本类型

注意事项, .
对ArrayList打印来说得到的不是地址值,而是内容,如果内容是空,得到的是空的中括号: []

  1. public static void main(String[] args) {
  2. //创建了一个Arraylist集合,集合的名称是List, 里面装的全都是String字符串类型的数据
  3. //备注:从JDK 1.7+开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写的。
  4. ArrayList<String> list = new ArrayList<>();
  5. System.out.println(list); // []
  6. //向集合当中添加一些数据,需要用到add方法。
  7. list.add( "赵丽颖");
  8. System.out.println(list); // [赵丽颖]
  9. list.add( "迪丽热巴");
  10. list.add("古力娜扎");
  11. list.add("玛尔扎哈");
  12. System. out . println(list);//[赵丽颖,迪丽热巴,古力娜孔,玛尔扎哈]
  13. // list. add(100); //错误写法!因为创建的时候尖括号泛型已经说了是字符串,添加进去的元素就能是字符串类型
  14. }

常用方法

public. boolean add(E e), 向集合当中添加元素,参数的类型和泛型-致。返回值代表添加是否成功。|
备注:对于Arrayl ist集合来说,add添加动作- -定是 成功的,所以返回值可用可不用。
但是对于其他集合(今后学习)来说,add添加动作不一定成功。
public E get(int index): 从集合当中获取元素,参数是索引编号,返回值就是对应位置的元素。
public E remove(int index): 从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。
public int size(): 获取集合的尺寸长度,返回值是集合中包含的元素个数。

  1. public static void main(String[] args) {
  2. ArrayList<String> list = new ArrayList<>();
  3. System.out.println(list); // []
  4. //向集合中添加元素: add
  5. boolean success = list.add("柳岩");
  6. System.out.println(list); // [柳岩]
  7. System.out.println("添加的动作是否成功:" + success); // true
  8. list.add("高园圆");
  9. list.add("赵又廷");
  10. list.add("李小璐");
  11. list.add("贾乃亮");
  12. System.out.println(list);//[柳岩,高圆园,赵又廷,李小璐,贾乃亮]
  13. //从集合中获取元素: get. 索引值从旰始
  14. String name = list.get(2);
  15. System.out.println("第2号索引位置。" + name); //赵又廷
  16. //从集合中删除元素: remove. 索引值从e开始。
  17. String whoRemoved = list.remove(3);//
  18. System.out.println("被删除的人是:" + whoRemoved);//被删除的人是李小璐
  19. System.out.println(list);//[柳岩,高圆圆,赵又廷,贾乃亮]
  20. //获取集合的长度尺寸,也就是其中元素的个数
  21. int size = list.size();
  22. System.out.println("集合的长度是:" + size);//4
  23. }

遍历集合
  1. public static void main(String[] args) {
  2. ArrayList<String> list = new ArrayList<>();
  3. list.add("迪丽热巴");
  4. list.add("古力哪扎");
  5. list.add("玛尔扎哈");
  6. //遍历集合
  7. for (int i = 0; i < list.size(); i++) {
  8. System.out.printl.vf
  9. ));
  10. }
  11. }

泛型的值

如果希望向集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类”。
基本类型
包装类(引用类型,包装类都位于java. lang包下)
byte Byte
short Short
int Integer [特殊]
long Long
float FLoat
double Double
chara Character [特殊]
boolean Boolean .

从JDK 1.5+开始, 支持自动装箱、自动拆箱。
自动装箱。基本类型—> 包装类型
自动拆箱:包装类型—> 基本类型

  1. public static void main(String[] args) {
  2. ArrayList<String> listA = new ArrayList<>();
  3. //错误写法!泛型只能是引用类型,不能是基本类型
  4. //Arraylist<int> listB = new Arraylist<>();
  5. ArrayList<Integer> listC = new ArrayList<>();
  6. listC.add(100);
  7. listC.add(200);++
  8. System.out.println(listC); // [100, 200]
  9. int num = listC.get(1);
  10. System.out.println("第1号元素是:" + num);//200
  11. }

练习

生成6个1~33之间的随机整数,添加到集合,并遍历集合。
  1. 思路:
  2. 1.需要存储6个数字,创建- -个集合,<Integer>
  3. 2.产生随机数,需要用到Random
  4. 3.用循环6次,来产生6个随机数字: for循环
  5. 4.循环内调用r. nextInt(int n), 参数是33, 0~32, 整体+1才是1~33
  6. 5.把数字添加到集合中,add
  7. 6.遍历集合: for. size. get
  8. public class TestelArrayList
  9. public static void main(String[] args) {
  10. //创建Random 对象
  11. Random random=new Random();
  12. //创建ArrayList 对象
  13. ArrayList<Integer> list = new ArrayList<>();
  14. // 添加随机数到集合
  15. for(int i=0;i<6;i++){
  16. int r = random. nextInt(33) + 1;
  17. list.add(r);
  18. }
  19. //遍历集合输出
  20. for (int i = 0; i < list.size(); i++) {
  21. System. out . println(list.get(1));
  22. }
  23. }
  24. }

自定义4个学生对象,添加到集合,并遍历。

main类

public class Teste2ArrayList {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<Student> list = new Arraylist<Student>();
        //创建学生对象
        Student s1 = new Student("赵丽颖", 18);
        student s2 = new Student("唐嫣", 28);
        Student s3 = new Student("景甜", 25);
        Student s4 = new Student("柳岩”,19);
                //把学生对象作为元索添加到集合中
                list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        //遍历生合
        for (int x = 0; x < list.size(); x++) {
            Student s = list.get(x);
            System.out.println(s.getName() + +s.getAge());
        }
    }
 }

学生类:

public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

定义以指定格式打印集合的方法(ArrayLjst类型作为参数),使用}扩起集合,使用@分隔每个元素。格式参照{元素@元素@元素}。
public class Demo03ArrayListPrint {
 public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("张三丰");
        list.add("宋远桥");
        list.add("张无忌");
        list.add("张翠山");
        System.out.println(list); // [张三丰,宋远桥,张无忌,张翠山]
        printArrayList(list);         //{张三丰@宋远桥@张无忌@张翠山}

    }

    /*
    定义方法的三要素
    返回值类型:只是进行打印而已,没有运算,没有结果;所以用void
    方法名称: printArraylist
    参数列表: Arraylist*/
    public static void printArrayList(ArrayList<String> list) {
        //{10@20@30}
        System.out.print("{");
        for (int i = 0; i < list.size(); i++) {
            String name = list.get(i);
            if (i == list.size() - 1) {
                System.out.println(name + "}");
            } else
                System.out.print(name + "@");
        }
    }
}

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

main类

public class ml {
    public static void main(String[] args) {
        sm m =new sm();
        Random rdm =new Random();
        ArrayList<Integer> old =new ArrayList<>();
        for (int i = 0; i <20; i++) {
            int all =rdm.nextInt(101);
            old.add(all);
        }
    ArrayList<Integer> newed = sm.getSamll(old);
        System.out.println(newed);
    }

}

实现类

public class sm {

}