09_Java中的集合基础

Java集合基础

一、集合ArrayList概述:

编程的时候如果存储多个数据,使用长度固定的数组储存格式,不一定满足我们的需求,更适应不了变化的需求,那么,此时该如何选择? (集合)

集合:提供了一种存储空间可变的存储模型,存储的数据容量可以发生改变

集合类有很多,目前我们学习:ArrayList

ArrayList<E>:
			可以调整大小的数组实现
            <E>:是一种特殊的数据类型,泛型(可以参考C++中的模板)

怎么用?

​ 更改E为我们使用引用数据类型替换即可,如类名

二、ArrayList构造方法和添加方法

方法名 说明
public ArrayList() 创建一个空的集合对象
public boolean add(E e) 指定的元素追加到此集合的末尾(尾插)
public void add(int index, E element) 在此集合中的指定位置插入元素
package com.itheima;
/*
测试ArrayList类的 构造 和 添加 方法
 */
//导包
import java.util.ArrayList;

public class ArrayListDemo01 {
    public static void main(String[] args){
        //public ArrayList(); 创建一个空的集合对象
        ArrayList<String> array = new ArrayList<String>();  //<>中只能是引用类型

        //使用public boolean add(E e);   来尾插元素,返回值表示 添加成功或者失败
        array.add("hello");
        array.add("world");

        //使用public void add(int index, E element); 在指定下标位置添加元素
        array.add(0, "JavaSE"); //注意:任意下标条件位范围:0~n

        //输出集合
        System.out.println("array:" + array);
        
        //通过size方法来获取长度
        System.out.println(array.size());
    }
}

三、ArrayList集合的常用方法

方法名 说明
public boolean remove(Object to) 删除指定的元素,返回删除是否成功
public E remove(int index) 删除指定索引处元素,返回被删除的元素
public E set(int index, E element) 修改指定索引处元素,返回被修改的元素
public E get(int index) 返回指定索引处的元素
public int size() 返回集合中元素个数
package com.itheima01;
/*
测试ArrayList的常用方法:
 */
//导包
import java.util.ArrayList;

public class ArrayListDemo02 {
    public static void main(String[] args) {
        //创建集合
        ArrayList<String> array = new ArrayList<String>();

        //添加元素
        array.add("hello");
        array.add("world");
        array.add("Java");

        //一、public boolean remove(Object o); 删除指定元素,返回删除是否成功
        //System.out.println(array.remove("world"));
        //System.out.println(array.remove("javaee"));

        //二、public E remove(int index); 删除指定索引处的元素,返回被删除的元素
        //System.out.println(array.remove(0));

        //报错信息:IndexOutOfBoundsException    索引越界
        //System.out.println(array.remove(3));

        //三、public E set(int index, E element); 修改指定索引元素,返回被修改的元素
        //System.out.println(array.set(1, "hello"));    //同样防止索引越界

        //四、public E get(int index);    返回指定索引处的元素
        //System.out.println(array.get(2));              //同样防止索引越界

        //五、public int size();      返回集合中元素个数
        System.out.println(array.size());

        //输出集合
        System.out.println("array:" + array);
    }
}

四、ArrayList集合案例

1、存储字符串并遍历:

package com.itheima02;
/*
实现案例存储字符串并建立
 */
//导包
import java.util.ArrayList;

public class ArrayListTest01 {
    public static void main(String[] args){
        //创建空的ArrayList对象
        ArrayList<String> array = new ArrayList<String>();

        //在集合中添加字符串对象
        array.add("张三");
        array.add("李四");
        array.add("王五");

        //遍历集合
        System.out.print("[");
        for(int i = 0; i < array.size(); i++){

            if(i != array.size() - 1){
                System.out.print(array.get(i));
                System.out.print(",");
            }
            else{
                System.out.print(array.get(i));
            }
        }
        System.out.println("]");
    }
}

2、存储学生对象并遍历:

package com.itheima02;
/*
创建一个学生类
 */
public class Student {
    //成员属性
    private String name;
    private int age;

    //构造方法  注:构造方法无返回值 也不需要写void
    public Student(){};

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

    //set/get/show方法
    public void setName(String name){
        this.name = name;
    }

    public String getName(){
        return this.name;
    }

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

    public int getAge(){
        return this.age;
    }

    public void show(){
        System.out.println("name:" + name + "," + "age:" + age);
    }
}
package com.itheima02;
/*
实现存储学生对象并遍历
 */

//导包
import java.util.ArrayList;

public class ArrayListTest02 {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<Student> arr = new ArrayList<Student>();

        //添加三个对象
        arr.add(new Student("张三", 30));
        arr.add(new Student("李四", 28));
        arr.add(new Student("王五", 29));

        //遍历输出
        for(int i = 0; i < arr.size(); i++){
          Student stu = arr.get(i);
          System.out.println("name:" + stu.getName() + "," + "age:" + stu.getAge());
        }
    }
}

3、升级版存储学生对象并遍历:

package com.itheima02;
/*
创建一个学生类
 */
public class Student {
    //成员属性
    private String name;
    private int age;

    //构造方法  注:构造方法无返回值 也不需要写void
    public Student(){};

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

    //set/get/show方法
    public void setName(String name){
        this.name = name;
    }

    public String getName(){
        return this.name;
    }

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

    public int getAge(){
        return this.age;
    }

    public void show(){
        System.out.println("name:" + name + "," + "age:" + age);
    }
}
package com.itheima02;
/*
存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
    学生的姓名和年龄来自于键盘录入
 */
//导包
import java.util.Scanner;
import java.util.ArrayList;

public class ArrayListTest03 {
    public static void main(String[] args){
        //创建集合对象
        ArrayList<Student> arr = new ArrayList<Student>();

        //为了提高代码的复用性,我们用方法来改进程序
        //调用方法:
        addStudent(arr);
        addStudent(arr);
        addStudent(arr);

        //遍历输出数据
        for(int i = 0; i < arr.size(); i++){
            System.out.println("姓名:" + arr.get(i).getName() + "," + "年龄:" + arr.get(i).getAge());
        }

    }

    /*
        两个明确:
                返回值类型:void
                参数:ArrayList<Student> array
     */
    public static void addStudent(ArrayList<Student> array){
        //创建Scanner对象用于接收数据
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入学生姓名:");
        String name = sc.nextLine();

        System.out.println("请输入学生序号:");
        int age = sc.nextInt();

        //创建学生对象
        Student s = new Student();
        s.setName(name);
        s.setAge(age);

        //在集合中添加数据
        array.add(s);
    }

}
posted @ 2022-09-30 17:33  如此而已~~~  阅读(20)  评论(0编辑  收藏  举报