栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ArrayList的介绍

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ArrayList的介绍

文章目录
  • ArrayList
  • 一、集合概述
  • 二.ArrayList集合
    • 1.ArrayList集合的对象获取
    • 2.ArrayList集合的对象获取
  • 三、ArrayList对于泛型的支持
    • 1.泛型概述
    • 2.怎么去统一ArrayList集合操作的元素类型?
  • 四、ArrayList常用方法、遍历
    • 1.ArrayList集合常用方法
  • 五、ArrayList集合案例:遍历并删除元素
    • 案例:遍历并删除元素值
  • 六、ArrayList集合案例:存储自定义类型的对象
    • 案例:影片信息在程序中显示
  • 七、ArrayList集合案例:元素搜索
    • 案例:学生信息系统的数据搜索


ArrayList 一、集合概述

集合是与数组类似,也是一种容器,用于装数据的。
数组的特点:
数据定义完成并启动后,类型确定、长度固定。
问题:在个数不能确定,且要进行增删数据操作的时候,数组是不太合适的
集合的特点:

集合的大小不固定,启动后可以动态变化,类型也可以选择不固定。 集合非常适合做元素个数不确定,且要进行增删操作的业务场景。 集合提供了许多丰富、好用的功能,而数组的功能单一。

二.ArrayList集合

ArrayList是集合中的一种,它支持索引。

1.ArrayList集合的对象获取
构造器说明
public ArrayList()创建一个空的集合对象
2.ArrayList集合的对象获取
方法名说明
public boolean add(E e)将指定的元素追加到此集合的末尾
public void add(int index,E element)在此集合中的指定位置插入指定的元素

代码如下(示例):

public class ArraListDemo1 {
    public static void main(String[] args) {
        //创建ArrayList集合对象
        ArrayList list =new ArrayList();
        //2、添加数据
        list.add("java");
        list.add("java");
        list.add("MySQL");
        list.add("张三");
        list.add("23");
        list.add("23.5");
        list.add(false);
        list.add('中');
        System.out.println(list);
     //3.给指定索引位置插入元素
        list.add(1,"赵敏");
        System.out.println(list);
    }
}

运行结果:
[java, java, MySQL, 张三, 23, 23.5, false, 中]
[java, 赵敏, java, MySQL, 张三, 23, 23.5, false, 中]

三、ArrayList对于泛型的支持 1.泛型概述

ArrayList:其实就是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型。
举例:
ArrayList :此集合只能操作字符串类型的元素。
ArrayList:此集合只能操作整数类型的元素。
注意:集合中只能存储引用类型,不支持基本数据类型。

泛型约束ArrayList集合的数据操作举例:

public class ArraListDemo2 {
    public static void main(String[] args) {
        //ArrayList list=new ArrayList();
        ArrayList list=new ArrayList<>();//JDK1.7开始,泛型后面的类型声明可以不写
        list.add("java");
        list.add("MySQL");
        ArrayList list1=new ArrayList<>();
        list1.add(23);
        list1.add(100);
        
    }
}

2.怎么去统一ArrayList集合操作的元素类型?

●使用泛型:<数据类型>

ArrayListlist1 = new ArrayList();
四、ArrayList常用方法、遍历 1.ArrayList集合常用方法
方法名称说明
public E get(int index)返回指定索引处的元素
public int size()删除指定索引处的元素,返回被删除的元素
public boolean remove(Object o)删除指定的元素,返回删除是否成功
public E set(int index,E element)修改指定索引处的元素,返回被修改的元素

代码如下(示例):

public class ArrayListDemo3 {
    public static void main(String[] args) {
            ArrayList list = new ArrayList<>();
            list.add( "Java" );
            list.add( "Java");
            list.add("MySQL");
            list.add("MyBatis");
            list.add("HTML");
            // 1、public E get(int index):获取某个索引位置处的元素值list..
        String e=list.get(3);
        System.out.println(e);//MyBatis
        //2、public int size():获取集合的大小(元素个数>
        System.out.println(list.size());//5
        //3、完成集合的遍历
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
            
        }//Java
        //Java
        //MySQL
       //MyBatis
      //HTML
          // 4、public E remove(int index):删除某个索引位置处的元素值,并返回被删除的元素值
        System.out.println(list);//[Java, Java, MySQL, MyBatis, HTML]
       String e2=list.remove(2);
        System.out.println(e2);//MySQL
        System.out.println(list);//[Java, Java, MyBatis, HTML]
        // 5、public boolean remove(Object o):直接剔除元素值,剔除成功返回true,删除失败返回false
        System.out.println(list.remove("MyBatis"));//true
        System.out.println(list);//[Java, Java, HTML]
       ArrayList list1=new ArrayList<>();
       list1.add("Java");
       list1.add("张三");
        list1.add("Java");
        list1.add("MySQL");
        System.out.println(list1);//[Java, 张三, Java, MySQL]
        //只会删除第一次出现的这个元素值,后面的不删除
        System.out.println(list1.remove("Java"));//true
        System.out.println(list1);//[张三, Java, MySQL]
        // 6、public E set(int index,E element):修改某个索引位置处的元素值。
       String e3=list1.set(0, "贾乃亮");
        System.out.println(e3);//张三
        System.out.println(list1);//[贾乃亮, Java, MySQL]

    }
}
五、ArrayList集合案例:遍历并删除元素 案例:遍历并删除元素值

需求:

  • 某个班级的考试在系统上进行,成绩大致为: 98,77,66,89,79,50,100
  • 现在需要先把成绩低于80分以下的数据去掉。

分析:

  1. 定义ArrayList集合存储多名学员的成绩。
  2. 遍历集合每个元素,如果元素值低于80分,去掉它。

代码如下(示例):

public class ArrayListTest1 {
    public static void main(String[] args) {
        //目标:学习遍历并删除元素的正确方案。
        //1、创建一个ArrayList集合存储一个班级学生的成绩
        ArrayList scores = new ArrayList<>();
        scores.add(98);
        scores.add(77);
        scores.add(66);
        scores.add(89);
        scores.add(79);
        scores.add(50);
        scores.add(100);
        System.out.println(scores);
        //2、把低于80分的成绩从集合中去掉。
        // scores = [98,77,66,89,79,50,100]
        //
        //           0   1   2   3  4   5   6
//    for (int i =0; i < scores.size(); i++) {
//            int score = scores.get(i);
//            if(score < 80){
//           //这个分数必须删除
//              scores.remove(i);
//            }
//        }
//        System.out.println(scores);//[98, 66, 89, 50, 100]

          //完美的方案之一
//            for (int i =0; i < scores.size(); i++) {
//            int score = scores.get(i);
//            if(score < 80){
//           //这个分数必须删除
//              scores.remove(i);
//              i--;
//            }
//        }
//        System.out.println(scores);//[98, 89, 100]

        //方案二 从后面倒着遍历再删除
        for (int i =scores.size() - 1; i >=0 ; i--) {
            int score=scores.get(i);
            if (score<80){
                scores.remove(i);
            }
        }
        System.out.println(scores);//[98, 89, 100]
    }

}
六、ArrayList集合案例:存储自定义类型的对象 案例:影片信息在程序中显示

需求
某影院系统需要在后台存储上述三部电影,然后依次展示出来。
分析
1︰定义一个电影类,定义一个集合存储电影对象。
2︰创建3个电影对象,封装相关数据,把3个对象存入到集合中去。

代码如下(示例):

public class Movie {
    public String name;
    private double  score;
    private String actor;

    public Movie(String name, double score, String actor) {
        this.name = name;
        this.score = score;
        this.actor = actor;
    }

    public Movie() {
    }

    public String getName() {
        return name;
    }

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

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    public String getActor() {
        return actor;
    }

    public void setActor(String actor) {
        this.actor = actor;
    }
}


public class ArrayListTest2 {
    public static void main(String[] args) {
//目标:理解ArrayList集合存储自定义类型的对象。
    //1、定义电影类。
    //2、创建三个电影对象
    Movie m1=new Movie("《肖生克的救赎》",9.7,"罗宾斯");
    Movie m2=new Movie("《霸王别姬》",9.6,"张因荣、张丰毅");
    Movie m3=new Movie("《阿甘正传》",9.5,"汤姆、汉克斯");
  //3、创建一个电影类型的ArrayList集合,存储三部电影对象
        ArrayList movies=new ArrayList<>();
        movies.add(m1);
        movies.add(m2);
        movies.add(m3);
        System.out.println(movies);

        //遍历电影类型中的每个电影对象,访问它的信息即可
        for (int i = 0; i < movies.size(); i++) {
            Movie m=movies.get(i);
            System.out.println("电影名称"+m.getName());
            System.out.println("电影得分"+m.getScore());
            System.out.println("电影主演"+m.getActor());
            System.out.println("----------------");
        }
    }

}
七、ArrayList集合案例:元素搜索 案例:学生信息系统的数据搜索


需求
·后台程序需要存储如上学生信息并展示,然后要提供按照学号搜索学生信息的功能。
分析

  1. 定义Student类,定义ArrayList集合存储如上学生对象信息,并遍历展示出来。
  2. 提供一个方法,可以接收ArrayList集合,和要搜索的学号,返回搜索到的学生对象信息,并展示。
  3. 使用死循环,让用户可以不停的搜索。
public class Student {
    private String stutyNumber;
    private  String name;
    private int age;
    private String className;

    public Student() {
    }

    public String getStutyNumber() {
        return stutyNumber;
    }

    public void setStutyNumber(String stutyNumber) {
        this.stutyNumber = stutyNumber;
    }

    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;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

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

    }
}

public class ArrayListTest3 {
    public static void main(String[] args) {
        //1、定义学生类
        //2、创建集合存储学生对象,创建学生对象封装学生信息。
        //把学生对象添加到集合中去。
        ArrayListstudents=new ArrayList<>() ;
        students.add(new Student("20180302","叶孤城",23,"护理一班"));
        students.add(new Student("20180303","东方不败",23,"推拿二班"));
        students.add(new Student("20180304","西门吹雪",26,"中药学四班"));
        students.add(new Student("20180305","梅超风",26,"神经科2班"));
        //3、遍历这些学生信息展示
        System.out.println("学号tt名称tt年龄tt班级");
        for (int i = 0; i < students.size(); i++) {
            Student s=students.get(i);
            System.out.println(s.getStutyNumber()+"t"+s.getName()+"t"+s.getAge()+"t"+s.getClassName());
        }
        //4、定义方法完成按照学号的搜索功能
        Scanner sc=new Scanner(System.in);
        while (true){
            System.out.println("请您输入学号查询学生对象");
            String studyNumber =sc.next();
            //调用方法查询
           Student s= getStudentById(students, studyNumber);
           //6、判断s中是否存在学生对象
            if(s==null){
                System.out.println("对不起,查无此人");
            }else {
                System.out.println("您查询的学生信息如下:");
                System.out.println(s.getStutyNumber()+"t"+s.getName()+"t"+s.getAge()+"t"+s.getClassName());
            }
        }
    }

    
    public static Student getStudentById(ArrayList students,String studyNumber){
    //1、遍历全部学生对象
        for (int i = 0; i < students.size(); i++) {
            Student s=students.get(i);
            //2、询问当前遍历的这个学生对象的学号,是否是我们要找的学号
            if(s.getStutyNumber().equals(studyNumber)){
                //这个s代表的学生对象就是我们要找的:返回它
                return s;
            }
        }
        //查无此人
        return null;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/872030.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号