【无标题】

前言

上一篇做了Worker员工案例,本篇是实验剩下的自主设计题目,一共4个独立小案例:User用户类、Product商品类、整数集合、字符集合。覆盖集合去重、遍历、筛选、倒序输出,适合课程作业直接参考。

案例1:User用户类

需求:属性姓名、年龄、性别;封装,无参有参构造;存入List;打印所有女用户;遍历筛选姓名长度大于2的用户

import java.util.ArrayList;

import java.util.List;

class User{

private String name;

private int age;

private String gender;

public User(){}

public User(String name, int age, String gender) {

this.name = name;

this.age = age;

this.gender = gender;

}

//get set

public String getName() { return name; }

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

public int getAge() { return age; }

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

public String getGender() { return gender; }

public void setGender(String gender) { this.gender = gender; }

@Override

public String toString() {

return "User{name='" + name + "', age=" + age + ", gender='" + gender + "'}";

}

}

public class UserTest {

public static void main(String\[\] args) {

List userList = new ArrayList<>();

userList.add(new User("李明",20,"男"));

userList.add(new User("小红",19,"女"));

userList.add(new User("阿雅",21,"女"));

复制代码
    System.out.println("===所有女用户===");
    for(User u : userList){
        if("女".equals(u.getGender())){
            System.out.println(u);
        }
    }
    System.out.println("\n===姓名长度大于2的用户===");
    for(User u : userList){
        if(u.getName().length()>2){
            System.out.println(u);
        }
    }
}

}

案例2:Product商品类

需求:商品名、单价、数量、产地;集合不能同名商品;筛选价格>1000、售空商品、产地北京;按商品名查询、价格区间查询

核心:添加商品前判断,商品名相同就不添加,实现简单去重

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

class Product{

private String pname;

private double price;

private int count;

private String address;

public Product(){}

public Product(String pname, double price, int count, String address) {

this.pname = pname;

this.price = price;

this.count = count;

this.address = address;

}

//get set

public String getPname() { return pname; }

public void setPname(String pname) { this.pname = pname; }

public double getPrice() { return price; }

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

public int getCount() { return count; }

public void setCount(int count) { this.count = count; }

public String getAddress() { return address; }

public void setAddress(String address) { this.address = address; }

@Override

public String toString() {

return "Product{" +"商品名='" + pname + ''' +", 价格=" + price +", 库存=" + count +", 产地='" + address + ''' + '}';

}

}

public class ProductTest {

public static void main(String\[\] args) {

List productList = new ArrayList<>();

addProduct(productList,new Product("手机",2999,10,"北京"));

addProduct(productList,new Product("平板",1200,0,"上海"));

addProduct(productList,new Product("耳机",199,50,"北京"));

addProduct(productList,new Product("手机",2999,20,"深圳"));//同名,不会加入集合

复制代码
    System.out.println("====价格大于1000商品====");
    for(Product p : productList){
        if(p.getPrice()>1000) System.out.println(p);
    }
    System.out.println("\n====售空商品====");
    for(Product p : productList){
        if(p.getCount() ==0) System.out.println(p);
    }
    System.out.println("\n====产地北京====");
    for(Product p : productList){
        if("北京".equals(p.getAddress())) System.out.println(p);
    }

    Scanner sc = new Scanner(System.in);
    System.out.print("\n输入商品名查询:");
    String name = sc.next();
    boolean find = false;
    for(Product p : productList){
        if(p.getPname().equals(name)){
            System.out.println(p);
            find=true;break;
        }
    }
    if(!find) System.out.println("商场无此商品!!!");

    System.out.print("输入最低价格:");
    double min = sc.nextDouble();
    System.out.print("输入最高价格:");
    double max = sc.nextDouble();
    System.out.println("价格区间内商品:");
    for(Product p : productList){
        if(p.getPrice()>=min && p.getPrice()<=max) System.out.println(p);
    }
    sc.close();
}
//添加商品方法:判断同名不添加
public static void addProduct(List<Product> list,Product p){
    for(Product item : list){
        if(item.getPname().equals(p.getPname())){
            System.out.println("商品已存在,不重复添加");
            return;
        }
    }
    list.add(p);
}

}

案例3:List存储整数

需求:打印集合、筛选三位数、求平均值、最大值、倒序输出

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

public class NumberTest {

public static void main(String\[\] args) {

List numList = new ArrayList<>();

numList.add(19);

numList.add(45);

numList.add(309);

numList.add(21);

numList.add(189);

System.out.println("全部数据:"+numList);

复制代码
    System.out.print("三位数:");
    for(Integer n : numList){
        if(n>=100 && n<=999) System.out.print(n+" ");
    }
    //平均值
    double sum=0;
    for(Integer n : numList) sum+=n;
    System.out.println("\n平均值:"+sum/numList.size());
    //最大值
    int max = Collections.max(numList);
    System.out.println("最大值:"+max);
    //倒序
    Collections.reverse(numList);
    System.out.println("倒序输出:"+numList);
}

}

案例4:List存储字符

需求:字符拼接输出、提取大写字母、统计非字母个数

import java.util.ArrayList;

import java.util.List;

public class CharTest {

public static void main(String\[\] args) {

List charList = new ArrayList<>();

charList.add('A');

charList.add('a');

charList.add('s');

charList.add('p');

charList.add('+');

charList.add('X');

charList.add('-');

复制代码
    //字符拼接
    StringBuilder sb = new StringBuilder();
    for(Character c : charList) sb.append(c);
    System.out.println("拼接结果:"+sb);

    System.out.print("大写字母:");
    int countNoLetter =0;
    for(Character c : charList){
        if(Character.isUpperCase(c)){
            System.out.print(c+" ");
        }
        if(!Character.isLetter(c)){
            countNoLetter++;
        }
    }
    System.out.println("\n非字母的个数:"+countNoLetter);
}

}

知识点总结

  1. ArrayList存储引用类型,自定义对象存入集合,遍历是最基础操作

  2. 简单去重:新增对象前循环判断同名,存在就不add

  3. Collections工具类:max、reverse实现最大值、集合反转

  4. Character工具类:isUpperCase、isLetter 判断字符类型

  5. StringBuilder 适合字符串拼接,性能优于直接+拼接

结尾

这4个小案例覆盖了List集合大部分课程基础考点,适合写实验报告,也可以自己扩展更多条件筛选功能。

相关推荐
汉吉龙测控技术1 小时前
激光对中仪作用介绍(AS 激光对中仪)
java
Wang's Blog1 小时前
Java 项目实战: 交友项目 - 完善用户信息章节复盘:套路清单与自检清单
java·dubbo·交友
用户3126874877201 小时前
Java 11-21 新特性盘点:var、record、sealed、虚拟线程
java
TangGeeA1 小时前
命令安全设置
java·服务器·安全
欣栀♡1 小时前
Spring 循环依赖不止三级缓存,Boot 2.6 起这个开关默认已经关了
java·spring·缓存
SL_staff1 小时前
3分钟上线新规则:业务人员拖拽完成合同超期自动暂停服务
java·mysql·全栈
Android小码家1 小时前
Vehicle 实战 自定义属性+测试demo
java·c++·framework·vhal·vehicle
范同学~1 小时前
固定表头+第一列+最后一列
java·服务器·前端
随风爱学习2 小时前
JAVA学习之异常
java