java学习day-15 集合、ArrayList集合

集合

为什么要有集合?

集合就是一个容器,和数组一样都是用来装东西的。集合能自动扩容,可以更快的解决庞大的数据。比数组更高效。数组的长度是固定,操作庞大数据时需要手动扩容。

集合存储数据类型的特点

数组可以存储基本数据类型也可以存储引用数据类型。但是集合只能存储储引用数据类型,存储基本数据类型的时候必须转换为对应的包装类。

集合和数组的对比

①长度:数组的长度是固定,集合的长度是可变。

②存储类型:

数组可以存储基本数据类型也可以存储引用数据类型。

集合只能存储储引用数据类型,存储基本数据类型转换为对应的包装类。

ArrayList集合入门

!!!这里学习只是一个小小的入门。

java 复制代码
public class ArrayListTest {

    public static void main(String[] args) {


        //这里注意:
        // <>:指的是泛型,类型参数用于类的定义中,则该类被称为泛型类.

        //JDK1.7 的写法
        //ArrayList<String> list = new ArrayList<String>();

        //此时已经创建 ArrayList对象,而Java已经写好了这个类,直接使用即可

        //JDK1.8以后写法
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);

        //ArrayList只能操作引用数据类行,其输出的不是地址,而是集合中存储的内容
        //使用 "[]"括起来的所有的内容。

        //ArrayList的基本使用



    }
}

ArrayList集合简单使用

java 复制代码
/**
 * 成员方法:
 *  boolean add(E e) 添加元素,从末尾添加
 *  void add(int index, E element) 将指定元素插入此列表中的指定位置。
 *
 *  boolean remove(E e) 删除元素,从该列表中删除指定元素的第一个匹配项(如果存在)。
 *  E remove(int index) 删除此列表中指定位置的元素。
 *
 *  E set(int index, E element) 修改元素,用指定的元素替换此列表中指定位置的元素。
 *
 *  E get(int index, E element) 查询元素,返回此列表中指定位置的元素。
 *  int size() 返回此列表中的元素数。 获取长度
 *
 * */


public class ArrayListTest {

    public static void main(String[] args) {

        //1.创建一个集合
        ArrayList<String> list = new ArrayList<>();

        //2.添加元素
        list.add("yyds");
        list.add("dddd");
        list.add("ootd");
        //System.out.println(list);

        /**
            //3.删除元素
            list.remove("dddd"); //在表中匹配删除项,存在就删除
            list.remove(1);   //删除此列表中指定位置的元素
            //System.out.println(list);
        */


        //4.修改元素
        list.set(2,"hhhh");//用指定的元素替换此列表中指定位置的元素
        //System.out.println(list);


        //5.查询元素
        list.get(2);
       // System.out.println(list);//返回此列表中指定位置的元素


        //6.遍历集合
        for (int i = 0; i < list.size(); i++) {
            //i:是索引
            //size():集合的长度
            list.get(i);//获取长度
        }
        System.out.println(list);
    }
}

简单练习

需求:定义一个集合,添加字段,并进行遍历

遍历格式参照:[元素1,元素2,元素3...]

java 复制代码
public class ArrayListTest {

    /*
     *   需求:定义一个集合,添加字段,并进行遍历
     *   遍历格式参照:[元素1,元素2,元素3...]
     * */
    public static void main(String[] args) {

        //创建ArrayList对象
        ArrayList<String> list = new ArrayList();
        //添加元素
        list.add("昨天学习了");
        list.add("今天学习了");
        list.add("后天学习了");

        //遍历
        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("]");
    }
}

输出:

需求:定义一个集合,添加数字,并进行遍历

遍历格式参照:[元素1,元素2,元素3...]

java 复制代码
public class ArrayListTest2 {

    /*
    *   需求:定义一个集合,添加数字,并进行遍历
    *   遍历格式参照:[元素1,元素2,元素3...]
    * */

    public static void main(String[] args) {
       // 冷知识:这里的说的集合只能存放引用数据类型,所以这里引入包装类
       /**
        *
        * byte     Byte
        * short    Short
        * int      Integer
        * char     Character
        * long     Long
        * float    Float
        * double   Double
        * boolean  Boolean
        *
        */

        //创建集合
        ArrayList<Integer> list = new ArrayList();

        //这里JDK1.5以后呢 int 和 Integer 是自动转换
        //添加元素
        list.add(111);
        list.add(222);
        list.add(333);

        //遍历
        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.print("]");
    }
}

输出:

需求:

1.自定义集合,存入三个对象

用户属性:id,username,password

2.要求:自定义一个方法,根据id查找对应大的信息。

如果存在,返回true / 如果存在,返回索引

如果不存在,返回false / 如果不存在,返回-1

java 复制代码
//用户对象
public class User {

    private String id;
    private String username;
    private String password;

    public User() {
    }

    public User(String id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}


public class ArrayLListTest {
    public static void main(String[] args) {
    /*
        需求:
        1.自定义集合,存入三个对象
            用户属性:id,username,password
        2.要求:自定义一个方法,根据id查找对应大的信息。
            如果存在,返回true    / 如果存在,返回索引
            如果不存在,返回false  / 如果不存在,返回-1
    * */

        //1.创建集合
        ArrayList<User> list = new ArrayList<>();

        //2.创建用户对象
        User user1 = new User("0001", "aa", "111");
        User user2 = new User("0002", "jj", "222");
        User user3 = new User("0003", "cc", "333");

        //3.添加三个对象
        list.add(user1);
        list.add(user2);
        list.add(user3);

        //4.调用方法,查找id是否存在,直接打印
        System.out.println(contains(list, "0003"));
        //System.out.println(getIndex(list, "0004"));
    }

    public static boolean contains(ArrayList<User> list, String id) {
        /*//遍历集合
        for (int i = 0; i < list.size(); i++) {
            User u = list.get(i);
            String uid = u.getId();
            if (uid.equals(id)) {
                return true;//如果存在就返回true
            }
        }
        //当集合内的数据全部比较完了,还是没有就直接返回false
        return false;*/
        return getIndex(list, id) >= 0;
    }

    public static int getIndex(ArrayList<User> list, String id) {
        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            User u = list.get(i);
            String uid = u.getId();
            if (uid.equals(id)) {
                return i;//如果存在就返回索引
            }
        }
        return -1;//当集合内的数据全部比较完了,还是没有就直接返回-1
    }
}

输出:

需求:

1.定义一个手机对象Phone

属性:品牌brand、价格price

2.定义及一个集合,存入三个手机对象,分别是小米3999,华为7999,苹果5999

3.定义一个方法,将价格低于6999的手机信息返回

java 复制代码
//手机对象
public class Phone {
    // 属性:品牌brand、价格price
    private String brand;
    private int price;

    public Phone() {
    }

    public Phone(String brand, int price) {
        this.brand = brand;
        this.price = price;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

}

public class ArrayListTest {
    /*
    * 需求:
        1.定义一个手机对象Phone
          属性:品牌brand、价格price
        2.定义及一个集合,存入三个手机对象,分别是小米3999,华为7999,苹果5999
        3.定义一个方法,将价格低于6000的手机信息返回
    * */
    public static void main(String[] args) {

        //1.创建集合
        ArrayList<Phone> list = new ArrayList<>();
        //2.创建手机对象
        Phone p1 = new Phone("小米", 3999);
        Phone p2 = new Phone("华为", 7999);
        Phone p3 = new Phone("苹果", 5999);
        //3.添加手机对象到集合
        list.add(p1);
        list.add(p2);
        list.add(p3);

        //4.条用方法,返回手机信息且价格低于6999
        ArrayList<Phone> phoneInfoList = getPhoneInfo(list);

        //5.遍历集合
        for (int i = 0; i < phoneInfoList.size(); i++) {
            Phone phone = phoneInfoList.get(i);
            System.out.println(phone.getBrand()+", "+phone.getPrice());
        }
    }

    //定义方法
    public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list) {
        //定义集合在存放价格低于6000的手机信息
        ArrayList<Phone> phoneList = new ArrayList<>();
        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            Phone p = list.get(i);
            if (p.getPrice() < 6000) {
                phoneList.add(p);
            }
        }
        return phoneList;

    }
}

输出:

相关推荐
solicitous2 小时前
遇到一个口头机遇的答辩准备4(ai给的术语清单)
学习·生活
Chef_Chen2 小时前
Agent学习--RAG(1)
学习·rag
知识分享小能手2 小时前
MongoDB入门学习教程,从入门到精通,MongoDB从应用程序连接副本集(12)
数据库·学习·mongodb
Armouy3 小时前
Nuxt.js 学习复盘:核心概念与实战要点
前端·javascript·学习
AI科技星3 小时前
万能学习方法论的理论建构与多领域适配性研究(乖乖数学)
人工智能·学习·算法·机器学习·平面·数据挖掘
ZhaoJuFei3 小时前
React生态学习路线
前端·学习·react.js
寒秋花开曾相惜3 小时前
【软考中级系统集成项目管理】1.3 产业现代化(1.3.1 农业农村现代化)
笔记·学习
健康人猿3 小时前
4 大类别 22 个高效的 Agentic Skills | 适用于 Claude、GPT
人工智能·gpt·学习·ai
皮卡蛋炒饭.4 小时前
库制作与原理
linux·学习