Java学习笔记9.——ArrayList集合(综合练习)

Java学习笔记9.——ArrayList集合

Arraylist的基本使用和集合联系



前言

集合和数组差不多,只不过集合是自动扩容的,所以本节的知识点不多,只有几个跟着写的案例。
本节内容比较少和短。


一、集合

1.集合是什么

集合和数组一样是一个容器,存放数据。不过集合的容器是自动扩容的,数组的容器是固定的。集合只能存放引用数据类型,如果想存储基本数据类型就需要把这些打包成一个包装类才可以。数组可以存放基本数据类型,也可以存放引用数据类型,比如字符串,对象等。

今天学的是ArrayList集合,其格式如下
ArrayList list = new Arraylist<>();

其中类似于数组的int[],就是定义集合的数据类型,需要注意E只能是引用型数据类型,基本数据类型不可以的。

ArrayList<E> list = new Arraylist<>();
System.out.println(list);

输出结果:[]

感觉这个和STringBuilder类似,都是经过处理后直接输出结果,而不是对象地址。当然ArrayList的结果是由[]包括的,当里面没有数据的时候就只有[]。

ArrayList常用的几种方法,增删改查

方法名说明
boolean add(E e)添加元素,返回值表示是否添加成功
boolean remove(E e)删除指定元素,返回值表示是否删除成功
E remove(int index)删除指定索引的元素,返回被删除的元素
E set(int index,E e)修改指定索引的元素,返回原来的元素
E get(int index)获取指定索引的元素
int size()集合的长度,也就是集合中元素的个数
package ArrayList;

import java.util.ArrayList;

public class ListTest1 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);

        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        System.out.println(list);

        boolean aaa = list.remove("aaa");
        System.out.println(aaa);

        String remove = list.remove(0);
        System.out.println(remove);
        System.out.println(list);

        String ddd = list.set(0, "ddd");
        System.out.println(ddd);
        System.out.println(list);

        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        String s = list.get(3);
        System.out.println(s);
        System.out.println(list);
//遍历
        for (int i = 0; i < list.size(); i++) {
            String s1 = list.get(i);
            System.out.println(s1);
        }
        System.out.println(list.size());
    }
}

二、综合练习

1.添加字符串

ArrayList<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        System.out.print("[");
        for (int i = 0; i < list.size(); i++) {
            if (i == list.size()-1){
                System.out.print(list.get(i));
            }else {
                System.out.print(list.get(i)+",");
            }
        }
        System.out.println("]");

2.添加数字

需求:定义一个集合,添加数字,并进行遍历。遍历格式参照:[元素1,元素2,元素3]。
其中
byte包装类Byte
short Short
char Character
int Interger
long Long
float Float
double Double
boolean Boolean

3.添加学生对象

需求:定义一个集合,添加一些学生对象,并进行遍历
学生类的属性为:姓名,年龄。

学生类,因为集合里添加学生对象,所以需要创建一个学生javabean类,然后创建对象。

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

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

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

    public String getName(){
        return name;
    }

    public String getAge() {
        return age;
    }

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

测试类

public static void main(String[] args) {
        Student student1 = new Student("张三","12");
        Student student2 = new Student("李四","11");
        Student student3 = new Student("王麻子","10");

        ArrayList<Student> list = new ArrayList<>();
        list.add(student1);
        list.add(student2);
        list.add(student3);

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

1.对象数据来自键盘录入

 public static void main(String[] args) {
        Student s1 = in();
        Student s2 = in();
        Student s3 = in();

        ArrayList<Student> list = new ArrayList<>();
        list.add(s1);
        list.add(s2);
        list.add(s3);

        for (int i = 0; i < list.size(); i++) {
            Student student = list.get(i);
            System.out.println(student.getName()+" "+student.getAge());
        }
    }
    //数据录入
    public static Student in(){
        Scanner sc = new Scanner(System.in);
        String name = null;
        String age = null;

        System.out.println("请输入姓名");
        name = sc.next();
        System.out.println("请输入年龄");
        age = sc.next();

        Student student = new Student(name,age);
        return student;
    }

4.添加用户并判断

需求:
1, main方法中定义一个集合,存入三个用户对象。
用户属性为: id,username,password

2,要求:定义一个方法,根据id查找对应的用户信息。
如果存在,返回true
如果不存在,返回false

package ArrayList;

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

public class StudentTwoList1 {
    public static void main(String[] args) {
        //需求:
        //1, main方法中定义一个集合,存入三个用户对象。
        //用户属性为: id,username,password
        //公
        //2,要求:定义一个方法,根据id查找对应的用户信息。
        //如果存在,返回true
        //如果不存在,返回false
        ArrayList<StudentTwo> list = new ArrayList<>();

        for (int i = 0; i < 3; i++) {
            StudentTwo s = new StudentTwo();
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入id");
            int id = sc.nextInt();
            System.out.println("请输入名字");
            String name = sc.next();
            System.out.println("请输入人密码");
            String pwd = sc.next();

            s.setId(id);
            s.setUserName(name);
            s.setPassword(pwd);
            list.add(s);
        }

        boolean flag = chek(list, 3);
        if (flag){
            System.out.println("存在"+flag);
        }else {
            System.out.println("不存在"+flag);
        }
    }
    public static boolean chek(ArrayList<StudentTwo> list,int index){
        boolean flag =false;
        for (int i = 0; i < list.size(); i++) {
            if (index == list.get(i).getId()){
                flag = true;
                break;
            }
        }
        return flag;
    }
}

1.返回索引

要求都一样,只是返回值为索引

//2,要求:定义一个方法,根据id查找对应的用户信息。
    //如果存在,返回索引
    //如果不存在,返回-1
    public static int chek(ArrayList<StudentTwo> list,int index){
        for (int i = 0; i < list.size(); i++) {
            if (index == list.get(i).getId()){
                return i;
            }
        }
        return -1; 
    }

5.添加手机对象并返回要求的数据

添加手机对象并返回要求的数据
需求:
定义Javabean类: PhonePhone属性:品牌,价格。
main方法中定义一个集合,存入三个手机对象。分别为:小米,1000。苹果,8000。锤子2999。定义一个方法,将价格低于3000的手机信息返回。

package ArrayList.Phone;

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        //添加手机对象并返回要求的数据
        //需求:
        //定义Javabean类: PhonePhone属性:品牌,价格。
        //main方法中定义一个集合,存入三个手机对象。分别为:小米,1000。苹果,8000。锤子2999。定义一个方法,将价格低于3000的手机信息返回。
        ArrayList<Phone> list = new ArrayList<>();
        Phone p1 = new Phone("小米",1000);
        Phone p2 = new Phone("苹果",8000);
        Phone p3 = new Phone("锤子",2999);

        list.add(p1);
        list.add(p2);
        list.add(p3);

        ArrayList<Phone> back = back(list);
        for (int i = 0; i < back.size(); i++) {
            System.out.println(back.get(i).getBrand()+" "+back.get(i).getPrice());
        }
    }
    public static ArrayList<Phone> back(ArrayList<Phone> list){
        ArrayList<Phone> list1 = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getPrice()<3000){
                list1.add(list.get(i));
            }
        }
        return list1;
    }
}


总结

多练习,集合本质和数组是一样的,唯一不同的就是自动扩容。
多想想知识点,实践知识点,知行合一。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

专注技术200年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值