Java集合基础

一、集合介绍

集合是一种容器,用来装数据的,类似于数组。

集合与数组的区别:

  • 数组定义完成并启动后,长度就固定了
  • 集合大小可变,开发中用的更多

集合与数组的使用选择:

  • 数组:存储的元素个数固定不变
  • 集合:存储的元素个数经常发生改变

二、ArrayList 集合

1. ArrayList 集合的创建

构造方法:public ArrayList()

基本格式:ArrayList<引用数据类型> 对象名 = new ArrayList<>();

注意:
<> 代表泛型,使用泛型可以对集合中存储的数据进行类型限制,并且泛型中不允许编写基本数据类型,但如果集合中需要使用到整数、小数、字符等数据,则需要使用基本数据类型所对应的包装类,转化为引用数据类型:

基本数据类型对应包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

2. ArrayList 集合的添加

例如1:创建一个集合容器,内部存储 11.1、22.2、33.3

public static void main(String[] args) {
        ArrayList<Double> list = new ArrayList<>();
        list.add(11.1);
        list.add(22.2);
        list.add(33.3);
        System.out.println(list);
}

运行结果为:

[11.1, 22.2, 33.3]

例如2:创建一个集合容器,内部存储 张三、李四、王五

public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        System.out.println(list);
}

运行结果为:

[张三, 李四, 王五]

3. ArrayList 集合的常用成员方法

在这里插入图片描述

4. ArrayList 集合的遍历

实例1:创建一个存储字符串的集合,内部存储3个字符串元素,使用程序实现在控制台遍历该集合。

public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            System.out.println(s);
        }
    }

运行结果为:

张三
李四
王五

实例2:创建一个存储字符串的集合,内部存储字符串元素{钢门吹雪,西域狂鸭,真年末黛西,李四}使用程序实现在控制台遍历该集合,将4个字的人名打印在控制台。

public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("钢门吹雪");
        list.add("西域狂鸭");
        list.add("真年末黛西");
        list.add("李四");
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            if (s.length() == 4){
                System.out.println(s);
            }
        }
    }

运行结果为:

钢门吹雪
西域狂鸭

实例3:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合。

public static void main(String[] args) {
        //3个学生对象
        Student stu1 = new Student("张三",18);
        Student stu2 = new Student("李四",19);
        Student stu3 = new Student("王五",18);

        //存储学生对象的集合
        ArrayList<Student> list = new ArrayList<>();
        list.add(stu1);
        list.add(stu2);
        list.add(stu3);

        //遍历该学生对象集合
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println(stu.getName() + " " + stu.getAge());
        }
    }

运行结果为:

张三 18
李四 19
王五 18

实例4:创建一个存储学生对象的集合,存储3个学生对象,在控制台展示出年龄低于18岁的年龄信息。

public static void main(String[] args) {
        //3个学生对象
        Student stu1 = new Student("张三",15);
        Student stu2 = new Student("李四",19);
        Student stu3 = new Student("王五",16);

        //存储学生对象的集合
        ArrayList<Student> list = new ArrayList<>();
        list.add(stu1);
        list.add(stu2);
        list.add(stu3);

        //遍历该学生对象集合
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            if (stu.getAge() < 18){
                System.out.println(stu.getName() + " " + stu.getAge());
            }
        }
    }

运行结果为:

张三 15
王五 16

实例5:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合,其中学生的姓名和年龄来自于键盘录入。

import java.util.ArrayList;
import java.util.Scanner;

public class TestDemo03 {
    public static void main(String[] args) {
        //准备集合容器,用于存储学生对象
        ArrayList<Student> list = new ArrayList<>();
        for (int i = 1; i <= 3; i++) {
            System.out.println("这是第" + i + "个学生");
            addStudent(list);
        }
        //遍历集合,打印学生信息
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println(stu.getName() + " " + stu.getAge());
        }
    }

    //添加学生信息
    public static void addStudent(ArrayList<Student> list){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生的姓名:");
        String name = sc.next();
        System.out.println("请输入学生的年龄:");
        int age = sc.nextInt();
        Student stu = new Student(name,age);
        list.add(stu);
    }
}

运行结果为:

这是第1个学生
请输入学生的姓名:
张三
请输入学生的年龄:
18
这是第2个学生
请输入学生的姓名:
李四
请输入学生的年龄:
19
这是第3个学生
请输入学生的姓名:
王五
请输入学生的年龄:
20
张三 18
李四 19
王五 20

实例6:创建一个存储 String 的集合,内部存储(test,张三,李四,test,test)字符串,删除所有的test字符串,删除后,将集合剩余元素打印在控制台。

import java.util.ArrayList;

public class TestDemo04 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("test");
        list.add("张三");
        list.add("李四");
        list.add("test");
        list.add("test");
        /*
            在删除集合元素时,每删除一个元素后,集合内部出现了空缺,集合会将后面的元素往前填充
            解决该问题有两种方式:
                1.每删除一个集合元素时,让记录当前删除位置的变量-1
                2.倒序删除
         */
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            if ("test".equals(s)){
                list.remove(i);
                i--;
            }
        }
        /*  倒序删除
        for (int i = list.size(); i > 0; i--) {
            String s = list.get(i);
            if ("test".equals(s)){
                list.remove(i);
            }
        }
         */
        System.out.println(list);
    }
}

运行结果为:

[张三, 李四]

实例7:定义一个方法,方法接收一个集合对象(泛型为Student),方法内部将年龄低于18的学生对象找出,并存入新集合对象,方法返回新集合。

import java.util.ArrayList;

public class TestDemo05 {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        list.add(new Student("张三",25));
        list.add(new Student("李四",17));
        list.add(new Student("王五",14));

        ArrayList<Student> list1 = select(list);

        for (int i = 0; i < list1.size(); i++) {
            Student stu = list1.get(i);
            System.out.println(stu.getName() + " " + stu.getAge());
        }
    }

    public static ArrayList<Student> select(ArrayList<Student> list){
        //创建新的集合容器,准备存储筛选后的学生对象
        ArrayList<Student> list1 = new ArrayList<>();
        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            //筛选
            if (stu.getAge() < 18){
                //符合条件的学生对象存储到新的集合容器中
                list1.add(stu);
            }
        }
        return list1;
    }
}

运行结果为:

李四 17
王五 14
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值