认识集合的基本概念

集合的基本使用

为什么要有集合

根据以往所学,如果我们想要同时存储多个元素,可以用数组实现,但是数组有弊端。数组的长度是固定的,一旦创建就不能发生变化。集合也可说为一个容器,也可存储多个数据,且长度可以发生变化。当我们创建一个集合时,长度为0。当我们添加第一个元素时,集合长度自动扩容为1,并以此类推。

集合存储数据类型的特点

**数组:**可以存基本数据类型,也可以存引用数据类型。

**集合:**可以存引用数据类型,但不能直接存基本数据类型。如果要存基本数据类型需要通过包装类实现。

集合和数组的对比

长度

数组:长度固定。

集合:自动收缩,可长可短。

存储类型

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

集合:可以存引用数据类型,如果要存基本数据类型,要把它们变成对应的包装类。

集合

java中规定了很多集合,以下介绍常用集合ArrayList

package com.example.listdemo;
import java.util.ArrayList;
public class ArrayListDemo1{
	public static void main(String[] args){
		//1.创建集合对象
		//泛型:限定集合中存储数据的类型
		//JDK7以前的写法:ArrayList<String> list = new ArrayList<String>();
        //JDK7以后:
        ArrayList<String> list = new ArrayList<>();
        /**以上创建的是ArrayList对象,而ArrayList是Java已经写好的一个类。这个类在底层做了些处理。打印对象不是地址值,而是集合中存储数据内容。在展示的时候会拿[]把所有的数据进行包裹**/
	}
}

ArrayList成员方法

1719797931697 )

package com.example.demo;

import java.util.ArrayList;

/**
 * boolean add(E e)     添加
 *
 * bollean remove(E e)  删除
 * E remove(int index)
 *
 * E set(int index,E e) 修改
 *
 * E get(int index)     查询
 * int size()           获取长度
 */
public class ArrayListDemo2 {
    public static void main(String[] args) {
//        1.创建一个集合
        ArrayList<String> list = new ArrayList<>();

//        2.添加元素
//        添加成功默认返回一个true
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("aaa");

//        3.删除元素
       /* boolean result1 = list.remove("aaa");
        System.out.println(result1);

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

//        将被删除的元素进行返回
        String str = list.remove(0);
        System.out.println(str);*/

//        4.修改元素
//        将被覆盖的值进行返回也就是原来的旧值
        /*String result = list.set(0,"bbb");
        System.out.println(result);*/

//        5.查询元素
        String s = list.get(0);
        System.out.println(s);
        
        //6.遍历
        for (int i = 0; i < list.size(); i++) {
//            i 索引
//            list.get(i)元素
            String str = list.get(i);
            System.out.println(str);
        }
    }
}

综合练习

练习1——集合的遍历

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

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

package com.example.demo;
import java.util.ArrayList;
import java.util.StringJoiner;

public class Test {
    public static void main(String[] args) {
//        1.创建一个集合对象和一个StringJoiner对象
        ArrayList<String> list = new ArrayList<>();
        StringJoiner str = new StringJoiner(",","[","]");
//        2.添加元素
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

//        3.遍历
        for (int i = 0; i < list.size(); i++) {
            str.add(list.get(i));
        }
//        4.打印
        System.out.println(str);
    }
}

练习2——添加数字并遍历

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

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

1719799978999

package com.example.demo;
import java.util.ArrayList;
import java.util.StringJoiner;

public class Test {
    public static void main(String[] args) {
//        1.创建一个集合对象和一个StringJoiner对象
        ArrayList<Integer> list = new ArrayList<>();
        StringJoiner str = new StringJoiner(",","[","]");
//        2.添加元素
//        JDK5以后int Integer之间是可以互相转换的
        list.add(1);
        list.add(2);
        list.add(3);

//        3.遍历
        for (int i = 0; i < list.size(); i++) {
            str.add(list.get(i).toString());
        }
//        4.打印
        System.out.println(str);
    }
}

练习3——添加学生对象并遍历

需求:定义一个集合,添加一些学生对象,并进行遍历。

学生的属性为:姓名,年龄。

package com.example.demo;

public class Student {
//    1.私有化成员变量
    private String name;
    private Integer age;

//    2.空参构造方法

    public Student() {
    }

//    3.带全部参数的构造方法
    public Student(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

//    4.get/set方法

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
package com.example.demo;
import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
//        1.创建一个集合对象
        ArrayList<Student> list = new ArrayList<>();
//        2.创建学生对象
        Student stu = new Student("张三",21);
        Student stu1 = new Student("李四",22);
        Student stu2 = new Student("王五",23);

//        3.添加对象
        list.add(stu);
        list.add(stu1);
        list.add(stu2);

//        3.遍历
        for (int i = 0; i < list.size(); i++) {
            Student student = list.get(i);
            //4.打印
            System.out.println(student.getName()+","+student.getAge());
        }
    }
}
练习3——添加学生对象并遍历Plus

**需求:**定义一个集合,添加一些学生对象,并进行遍历。

学生类的属性为:姓名,年龄

要求:对象的数据来自键盘录入。

package com.example.demo;
import java.util.ArrayList;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
//        1.创建一个集合对象
        ArrayList<Student> list = new ArrayList<>();
//        2.键盘录入
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入学生姓名:");
            String name = scanner.next();
            System.out.println("请输入学生年龄:");
            Integer age = scanner.nextInt();
            //        3.创建学生对象
            Student stu = new Student();
            //        4.赋值
            stu.setName(name);
            stu.setAge(age);
            //        5.添加对象
            list.add(stu);
        }

//        6.遍历
        for (int i = 0; i < list.size(); i++) {
            Student student = list.get(i);
            //7.打印
            System.out.println(student.getName()+","+student.getAge());
        }
    }
}

练习4——添加用户对象并判断是否存在

需求

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

要求:定义一个方法,根据id查找对应的用户信息。

  • 如果存在,返回true
  • 如果不存在,返回false
package com.example.demo;

public class User {
//    1.私有化成员变量
    private Integer id;
    private String userName;
    private String passWord;

//    2.空参构造
    public User() {
    }

//    3.带全部参数的构造方法
    public User(Integer id, String userName, String passWord) {
        this.id = id;
        this.userName = userName;
        this.passWord = passWord;
    }

//    get/set方法
    public Integer getId() {
        return id;
    }

    public void setId(Integer 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;
    }
}
package com.example.demo;
        import java.util.ArrayList;
        import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
//        1.创建一个集合对象
        ArrayList<User> list = new ArrayList<>();
//        2.键盘录入
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入用户id:");
            int id = scanner.nextInt();
            System.out.println("请输入用户名:");
            String username = scanner.next();
            System.out.println("请输入用户密码:");
            String password = scanner.next();
            //        3.创建用户对象
            User user = new User();
            //        4.赋值
           user.setId(id);
           user.setUserName(username);
           user.setPassWord(password);
            //        5.添加对象
            list.add(user);
        }
        System.out.println("请输入要查询的id:");
        int id = scanner.nextInt();
        boolean result = isNull(list,id);
        System.out.println(result);
    }
    public static boolean  isNull(ArrayList<User> list,int id){
        for (int i = 0; i < list.size(); i++) {
            boolean result = list.get(i).getId().equals(id);
            if (result){
                return true;
            }
        }
        return false;
    }
}

练习5——添加手机对象并返回要求的数据

需求:定义一个JavaBean类:phone

phone属性:品牌,价格。

main方法中定义一个集合,存入三个手机对象

分别为:小米,1000.苹果,8000.锤子,2999.

定义一个方法,将价格低于3000的手机信息返回。

package com.example.demo;

public class Phone {
//    1.私有化成员变量
    private String brand;
    private Integer price;

//    2.空参构造方法
    public Phone() {
    }

//    3.带有全部参数的构造方法
    public Phone(String brand, Integer price) {
        this.brand = brand;
        this.price = price;
    }

//    4.get/set方法

    public String getBrand() {
        return brand;
    }

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

    public Integer getPrice() {
        return price;
    }

    public void setPrice(Integer price) {
        this.price = price;
    }
}
package com.example.demo;

import java.util.ArrayList; 

public class Test {
    public static void main(String[] args) {
//        1.创建一个集合对象
        ArrayList<Phone> list = new ArrayList<>();
//        2.创建对象
        Phone phone = new Phone("小米",1000);
        Phone phone1 = new Phone("苹果",8000);
        Phone phone2 = new Phone("锤子",2999);

//        3.添加元素
       list.add(phone);
       list.add(phone1);
       list.add(phone2);

//       5.调用方法
        ArrayList<Phone> result = getPhoneInfo(list);

//        6.打印
        for (int i = 0; i < result.size(); i++) {
            Phone phone3 = result.get(i);
            System.out.println(phone3.getBrand()+","+phone3.getPrice());
        }
    }

//    4.定义一个方法,将价格低于3000的手机信息返回
//    如果我们要返回多个数据,可以把这些数据先放到一个容器当中(集合,数组)
    public static ArrayList  getPhoneInfo(ArrayList<Phone> list){
        ArrayList<Phone> result = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            int price = list.get(i).getPrice();
            if (price < 3000){
                Phone phone = list.get(i);
                result.add(phone);
            }
        }
        return result;
    }
}
        }
    }

//    4.定义一个方法,将价格低于3000的手机信息返回
//    如果我们要返回多个数据,可以把这些数据先放到一个容器当中(集合,数组)
    public static ArrayList  getPhoneInfo(ArrayList<Phone> list){
        ArrayList<Phone> result = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            int price = list.get(i).getPrice();
            if (price < 3000){
                Phone phone = list.get(i);
                result.add(phone);
            }
        }
        return result;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值