【黑马程序员java笔记】集合

集合和数组对比

  1. 数组不能改变长度,集合可以自动扩容。
  2. 数组可以存储基本数据类型或引用数据类型;集合只能存引用数据类型,如果要存基本数据类型,则需要改为包装类。

ArrayList

  1. 创建集合的方法:ArrayList< String > list = new ArrayList<>();
    <>中的String是泛型举例,用于限定集合中存储数据的类型。只能是引用数据类型。
    打印时,打印的不是地址值,而是数据内容,且默认用[]将数据内容框起来。
  2. 成员方法:增、删、改、查
    成员方法

集合的遍历方式

题目

  1. 定义一个集合
  2. 利用add添加元素
  3. 遍历方式和数组遍历方式一样或者直接打印集合也行
package com.oop.arrayListDemo08;

import java.util.ArrayList;

/**
*@PackageName:com.oop.arrayListDemo08
*@ClassName:travelseArrayList
*@Description:定义一个集合,添加字符串,并按照格式遍历
*@author soso
*@date 2024/9/2211:15
*/
public class travelseArrayList {
    public static void main(String[] args) {
        //1. 定义一个集合
        ArrayList<String> list = new ArrayList<>();

        //2. 利用add添加元素
        list.add("A");
        list.add("B");
        list.add("C");

        //3. 遍历方式和数组遍历方式一样或者直接打印集合也行
        System.out.println(list);
    }
}

结果图:
结果图

在集合中添加数字

由于是基本数据类型,故需要先变成包装类
包装类
即在泛型中放入上述包装类后就可以直接添加基本数据类型了

如何添加自己定义的对象

在泛型中放入自己定义的类的名称,添加时直接添加对象即可。
此时直接打印集合元素时打印的是地址值,需要利用自己定义的类中的构造方法获取内容再打印。

  • 由于集合的长度可以发生变化,所以当集合没有内容时,list.size()获得的是零

添加用户对象并判断是否存在

题目

  1. 定义一个集合
  2. 定义三个用户对象,先创建用户类
  3. 集合中添加用户对象
  4. 输入集合,需要查找的id
    输出布尔值
    判断是否有相同的id,有则打印出来
    主方法类:
package com.oop.arrayListDemo08.findUser;

import java.util.ArrayList;

/**
 * @author soso
 * @PackageName:com.oop.arrayListDemo08.findUser
 * @ClassName:Main
 * @Description:
 * @date 2024/9/2211:41
 */
public class Main {
    public static void main(String[] args) {
        //1. 定义一个集合
        ArrayList<User> list = new ArrayList<>();

        //2. 定义三个用户对象,先创建用户类
        User user1 = new User(1,"soso1","soso123");
        User user2 = new User(2,"soso2","soso123");
        User user3 = new User(3,"soso3","soso123");

        //3. 集合中添加用户对象
        list.add(user1);
        list.add(user2);
        list.add(user3);

        //4. 输入集合,需要查找的id
        System.out.println(tellUser(list,5));
    }
    //4.
    public static boolean tellUser(ArrayList<User> list, int index) {
        //    4.1 输出布尔值
        //    4.2 判断是否有相同的id,有则打印出来
        int userIndex = getIndex(list,index);
        return userIndex != -1;
    }
    //4.2
    public static int getIndex(ArrayList<User> list, int index) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId() == index) {
                return i;
            }
        }
        return -1;
    }


}

用户类:

package com.oop.arrayListDemo08.findUser;

/**
 * @author soso
 * @PackageName:com.oop.arrayListDemo08.findUser
 * @ClassName:User
 * @Description:
 * @date 2024/9/2211:40
 */
public class User {
    private int id;
    private String userName;
    private String password ;
    public User(int id, String userName, String password) {
        this.id = id;
        this.userName = userName;
        this.password = password;
    }
    public User(){

    }
    public int getId() {
        return id;
    }
    public void setId(int 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;
    }
}

添加手机对象并返回多个数据

题目

  • 如果要返回多个数据,则可以用一个容器(如集合或数组)返回,再把容器返回
  1. 定义手机类,属性是品牌和价格
  2. 创建集合和对象
  3. 给集合添加对象
  4. 创建方法,输入手机集合,返回价格小于3000的手机信息集合
  5. 把价格低于3000的手机信息打印
package com.oop.arrayListDemo08.getPhoneInfo;

import java.util.ArrayList;

/**
 * @author soso
 * @PackageName:com.oop.arrayListDemo08.getPhoneInfo
 * @ClassName:getPhoneInfo
 * @Description:用集合存储手机信息,并将价格处于3000以下的手机信息打印
 * @date 2024/9/2214:53
 */
public class getPhoneInfo {
    public static void main(String[] args) {
        //1. 定义手机类,属性是品牌和价格
        //2. 创建集合和对象
        Phone phone = new Phone();
        ArrayList<Phone> list = new ArrayList<>();
        Phone phone1 = new Phone("苹果",5999);
        Phone phone2 = new Phone("小米",1999);
        Phone phone3 = new Phone("华为",4999);

        //3. 给集合添加对象
        list.add(phone1);
        list.add(phone2);
        list.add(phone3);

        //4. 创建方法,输入手机集合,返回价格小于3000的手机信息集合
        ArrayList<Phone> phones = getPhoneInfo(list,3000);
        //5. 把价格低于3000的手机信息打印
        System.out.println("价格小于3000的手机有:");
        for (Phone p : phones) {
            System.out.println(p.getBrand()+","+p.getPrice());
        }
    }
    //4.
    public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> phoneList, int num) {
        ArrayList<Phone> phones = new ArrayList<>();
        for (Phone phone : phoneList) {
            if (phone.getPrice() < num) {
                phones.add(phone);
            }
        }
        return phones;
    }
}

结果图:
题目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值