ArrayList集合的使用(个人学习笔记黑马学习)

目录

一定义,添加,输出

二 给指定索引位置插入元素

 三泛型

四常用API和遍历

案例一 遍历并删除元素 

ArrayList集合存储自定义类型

Arraylist搜索


 

一定义,添加,输出

package ArrayList;

import java.util.ArrayList;

public class ArrayListDemo1 {
    public static void main(String[] args) {
        ArrayList list=new ArrayList();
        list.add("java");
        list.add("Mysql");
        list.add("黑马");
        list.add(23);
        list.add(23.5);
        list.add(false);
        list.add('中');

        System.out.println(list);
    }
}

二 给指定索引位置插入元素

package ArrayList;

import java.util.ArrayList;

public class ArrayListDemo1 {
    public static void main(String[] args) {
        ArrayList list=new ArrayList();
        list.add("java");
        list.add("Mysql");
        list.add("黑马");
        list.add(23);
        list.add(23.5);
        list.add(false);
        list.add('中');

        System.out.println(list);

        list.add(1,"小花");
        System.out.println(list);
    }
}

 三泛型

  • ArrayList<E>:泛型类,约束集合只能操作某种数据类型
package ArrayList;

import java.util.ArrayList;

public class ArrayListDemo2 {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        list.add("java");
        
        
        ArrayList<Integer> list2=new ArrayList<>();
        list2.add(23);
        list2.add(25);
    }
}

四常用API和遍历

方法

说明

public E get(int index)返回指定索引处的元素
public int size()返回集合中的元素个数
public E remove(int index)删除指定索引处的元素,返回被删除的元素
public boolean remove(Object o)删除指定的元素,返回删除是否成功
public E set(int index,E element)修改指定索引处的元素,返回被修改的元素
package ArrayList;

import java.util.ArrayList;

public class ArrayListDemo3 {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        list.add("java");
        list.add("java");
        list.add("Mysql");
        list.add("MyBatis");
        list.add("HTML");

        //public E get(int index)
        String e=list.get(3);
        System.out.println(e);

        //public int size()
        System.out.println(list.size());

        //完成集合遍历
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        System.out.println("--------");
        //public E remove(int index)
        System.out.println(list);
        String e2=list.remove(2);
        System.out.println(e2);
        System.out.println(list);


        System.out.println("---------");
        //public boolean remove(Object o)
        System.out.println(list.remove(2));
        System.out.println(list);

        System.out.println("---------");
        //public E set(int index,E element)
        String e3=list.set(2,"vue");
        System.out.println(e3);
        System.out.println(list);


    }
}

案例一 遍历并删除元素 

遍历并删除元素值
需求:
某个班级的考试在系统上进行,成绩大致为: 98,77,66,89,79,50,109现在需要先把成绩低于80分以下的数据去掉
分析:
定义ArrayList集合存储多名学员的成绩
遍历集合每个元素,如果元素值低于80分,去掉它。

错误代码

package ArrayList;

import java.util.ArrayList;

public class ArrayListDemo4 {
    public static void main(String[] args) {
        ArrayList<Integer> scores = new ArrayList<>();
        scores.add(80);
        scores.add(45);
        scores.add(97);
        scores.add(55);
        scores.add(65);
        scores.add(87);
        scores.add(80);
        scores.add(75);
        scores.add(90);
        System.out.println(scores);


        for (int i = 0; i < scores.size(); i++) {
            int score=scores.get(i);
            if (score<80){
                scores.remove(i);
            }
        }
        System.out.println(scores);

    }
}

 

错误原因:将小于80的删除,后面会自动往前移,然而遍历却自增。

修改方法一:每次成功删除后 往后退一个人位置 让当前位置重新判断

package ArrayList;

import java.util.ArrayList;

public class ArrayListDemo4 {
    public static void main(String[] args) {
        ArrayList<Integer> scores = new ArrayList<>();
        scores.add(80);
        scores.add(45);
        scores.add(97);
        scores.add(55);
        scores.add(65);
        scores.add(87);
        scores.add(80);
        scores.add(75);
        scores.add(90);
        System.out.println(scores);


        for (int i = 0; i < scores.size(); i++) {
            int score=scores.get(i);
            if (score<80){
                scores.remove(i);
                i--;//每次成功删除后 往后退一个位置
            }
        }
        System.out.println(scores);

    }
}

修改方法二:倒着循环遍历

package ArrayList;

import java.util.ArrayList;

public class ArrayListDemo4 {
    public static void main(String[] args) {
        ArrayList<Integer> scores = new ArrayList<>();
        scores.add(80);
        scores.add(45);
        scores.add(97);
        scores.add(55);
        scores.add(65);
        scores.add(87);
        scores.add(80);
        scores.add(75);
        scores.add(90);
        System.out.println(scores);


        for (int i = scores.size()-1; i >=0 ; i--) {
            int score=scores.get(i);
            if (score<80){
                scores.remove(i);
            }
        }
        System.out.println(scores);

    }
}

ArrayList集合存储自定义类型

案例:集合存储自定义元素并遍历。
需求:定义电影类《名称,分值,演员),创达了个电影对象,代表三部影片,存入集合中并遍历
《肖生克的救赎》,9.7 , 罗宾斯
《霸王别姬》, 9.6, 张国荣、张丰毅
《阿甘正传》,9.5, 汤姆.汉克斯

package ArrayList;

import java.util.ArrayList;

public class MovieTest {
    public static void main(String[] args) {

        Movie m1=new Movie("《肖生克的救赎》",9.7,"罗宾斯" );
        Movie m2=new Movie("《霸王别姬》", 9.6,"张国荣、张丰毅");
        Movie m3=new Movie("《阿甘正传》",9.5,"汤姆.汉克斯");

        ArrayList<Movie> movies=new ArrayList<Movie>();
        movies.add(m1);
        movies.add(m2);
        movies.add(m3);

        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搜索

案例: 学生信息系统:展示数据,并按照学号完成搜索学生类信息《学号,姓名,性别,班级)测试数据:
"20180302”,"叶孤城",23,"护理一班"

"20180303","东方不败”,23,"推拿二班"

"20180304","西门吹雪",26,"中药学四班"

"20180305","梅超风",26,"神经科2班"

package ArrayList;

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


    public Student() {
    }

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

    /**
     * 获取
     * @return number
     */
    public String getstudyNumber() {
        return studyNumber;
    }

    /**
     * 设置
     * @param studyNumber
     */
    public void setstudyNumber(String studyNumber) {
        this.studyNumber = studyNumber;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    /**
     * 获取
     * @return className
     */
    public String getClassName() {
        return className;
    }

    /**
     * 设置
     * @param className
     */
    public void setClassName(String className) {
        this.className = className;
    }


}
package ArrayList;

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

public class StudentTest {
    public static void main(String[] args) {
        ArrayList<Student> students=new ArrayList<Student>();
        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班"));

        System.out.println("学号\t\t姓名\t\t年龄\t班级\t");
        for (int i = 0; i < students.size(); i++) {
            Student s=students.get(i);
            System.out.println(s.getstudyNumber()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getClassName());
        }

        Scanner sc=new Scanner(System.in);
        while (true){
            System.out.println("请输入学号" );
            String studentNumber=sc.next();
            Student s=getStudentById(students,studentNumber);
            if (s==null){
                System.out.println("查无此人" );
            }else{
                System.out.println("查询结果如下" );
                System.out.println(s.getstudyNumber()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getClassName());
            }
        }

    }

    public static Student getStudentById(ArrayList<Student> students,String studyNumber){
        for (int i = 0; i < students.size(); i++) {
            Student s=students.get(i);
            if (s.getstudyNumber().equals(studyNumber)){
               return s;
            }
        }
        return null;
    }
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值