Java集合类

2019-03-06  本文已影响0人  天才一般的幼稚

集合类就是一种变长数组。Java集合类中不能存放基本数据类型,而只能存放对象。Java集合类主要是由两个接口派生而出的:Collection和Map。

1、使用集合框架类实现购物车功能

Product.java

package collectiontest;

public class Product {
    private String pNO; //商品编号
    private String pName;   //商品名称
    private double sellPrice;   //价格
    private int points; //积分
    private int amounts = 0;    //数量
    public String getpNO() {
        return pNO;
    }
    public void setpNO(String pNO) {
        this.pNO = pNO;
    }
    public String getpName() {
        return pName;
    }
    public void setpName(String pName) {
        this.pName = pName;
    }
    public double getSellPrice() {
        return sellPrice;
    }
    public void setSellPrice(double sellPrice) {
        this.sellPrice = sellPrice;
    }
    public int getPoints() {
        return points;
    }
    public void setPoints(int points) {
        this.points = points;
    }
    public int getAmounts() {
        return amounts;
    }
    public void setAmounts(int amounts) {
        this.amounts = amounts;
    }
}

ShoppingCart.java

package collectiontest;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ShoppingCart {
    //定义集合,模拟购物车
    private List list = new ArrayList();
    
    //增加一个商品
    public void addProduct(Product p){
        //如果购物车(集合里)已经存在该种商品,将数量加1
        for(int i=0; i<list.size(); i++){
            Object obj = list.get(i);
            Product product = (Product)obj;
            if(product.getpNO().equals(p.getpNO())){
                product.setAmounts(product.getAmounts()+1);
                return;
            }
        }
        p.setAmounts(1);
        list.add(p);
    }
    
    //删除一个商品
    public void deleteProduct(String pNO){
        //如果购物车(集合)里已经存在该种商品,判断数量是否为1
        for(int i=0; i<list.size(); i++){
            Object obj = list.get(i);
            Product product = (Product)obj;
            if(product.getpNO().equals(pNO)){
                //商品数量大于1时将数量减去1,数量等于1时删除该商品
                if(product.getAmounts() > 1){
                    product.setAmounts(product.getAmounts() - 1);
                }
                else{
                    list.remove(i);
                }
                return;
            }
        }
        //如果不存在,提示出错
        System.out.println("购物车中不存在该商品!");
    }
    
    //修改商品个数
    public void updateCount(String pNO, int amount){
        if(amount <= 0){
            System.out.println("商品数量应该大于0");
        }
        for(int i=0; i<list.size(); i++){
            Object obj = list.get(i);
            Product product = (Product)obj;
            if(product.getpNO().equals(pNO)){
                product.setAmounts(amount);
                return;
            }
        }
        //如果不存在,提示出错
        System.out.println("购物车中不存在该商品");
    }
    
    //显示购物车中的所有商品
    public void showChart(){
        System.out.print(String.format("%-16s", "|商品编号"));
        System.out.print(String.format("%-20s", "|商品名称"));
        System.out.print(String.format("%-6s", "|价格"));
        System.out.print(String.format("%-6s", "|积分"));
        System.out.print(String.format("%-6s", "|数量"));
        System.out.print("\n");
        
        Iterator item = list.iterator();
        while(item.hasNext()){
            Product p = (Product)item.next();
            System.out.print(String.format("%-10s", "|"+p.getpNO()));
            System.out.print(String.format("%-20s", "|"+p.getpName()));
            System.out.print(String.format("%-6s", "|"+p.getSellPrice()));
            System.out.print(String.format("%-6s", "|"+p.getPoints()));
            System.out.print(String.format("%-6s", "|"+p.getAmounts()));
            System.out.print("\n");
        }
    }
}

Test.java

package collectiontest;

public class Test {

    public static void main(String[] args) {
        ShoppingCart cart = new ShoppingCart();
        //创建第一种商品
        Product p1 = new Product();
        p1.setpNO("234126789");
        p1.setpName("高露洁140g");
        p1.setSellPrice(12.9);
        System.out.println("1.增加一个新的购物车");
        p1.setPoints(1);
        cart.addProduct(p1);
        cart.showChart();
        System.out.println("\n2.增加一个新商品的购物车");
        cart.addProduct(p1);
        cart.showChart();
        //创建第二种商品
        Product p2 = new Product();
        p2.setpNO("76124241212");
        p2.setpName("飘柔洗发水1000ml");
        p2.setSellPrice(23.12);
        p2.setPoints(2);
        System.out.println("\n3.再增加一个新的购物车");
        cart.addProduct(p2);
        cart.showChart();
        System.out.println("\n4.删除一个新商品的购物车");
        cart.deleteProduct("234126789");
        cart.showChart();
    }
}
运行结果

总结:
1、list.size():计算列表中元素的个数
2、list.get(i):返回列表中指定索引的元素,返回Object对象
3、.equal()判断值
4、list.add(p):将p插入到列表尾部
5、list.remove(i)移除指定位置的元素
6、String.format("",""):格式化输出字符串


2、使用泛型集合实现购物车功能

在创建List集合对象时,使用泛型约束存放的对象类型,这样在使用Iterator迭代器进行读取时就不需要进行强制转换。
ShoppingCart.java

package collectiontest;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ShoppingCart {
    //定义泛型集合,模拟购物车
    private List<Product> list = new ArrayList<Product>();
    
    //增加一个商品
    public void addProduct(Product p){
        //如果购物车(集合里)已经存在该种商品,将数量加1
        for(int i=0; i<list.size(); i++){
            Object obj = list.get(i);
            Product product = (Product)obj;
            if(product.getpNO().equals(p.getpNO())){
                product.setAmounts(product.getAmounts()+1);
                return;
            }
        }
        p.setAmounts(1);
        list.add(p);
    }
    
    //删除一个商品
    public void deleteProduct(String pNO){
        //如果购物车(集合)里已经存在该种商品,判断数量是否为1
        for(int i=0; i<list.size(); i++){
            Object obj = list.get(i);
            Product product = (Product)obj;
            if(product.getpNO().equals(pNO)){
                //商品数量大于1时将数量减去1,数量等于1时删除该商品
                if(product.getAmounts() > 1){
                    product.setAmounts(product.getAmounts() - 1);
                }
                else{
                    list.remove(i);
                }
                return;
            }
        }
        //如果不存在,提示出错
        System.out.println("购物车中不存在该商品!");
    }
    
    //修改商品个数
    public void updateCount(String pNO, int amount){
        if(amount <= 0){
            System.out.println("商品数量应该大于0");
        }
        for(int i=0; i<list.size(); i++){
            Object obj = list.get(i);
            Product product = (Product)obj;
            if(product.getpNO().equals(pNO)){
                product.setAmounts(amount);
                return;
            }
        }
        //如果不存在,提示出错
        System.out.println("购物车中不存在该商品");
    }
    
    //显示购物车中的所有商品
    public void showChart(){
        System.out.print(String.format("%-16s", "|商品编号"));
        System.out.print(String.format("%-20s", "|商品名称"));
        System.out.print(String.format("%-6s", "|价格"));
        System.out.print(String.format("%-6s", "|积分"));
        System.out.print(String.format("%-6s", "|数量"));
        System.out.print("\n");
        
        Iterator<Product> item = list.iterator();
        while(item.hasNext()){
            Product p = item.next();
            System.out.print(String.format("%-10s", "|"+p.getpNO()));
            System.out.print(String.format("%-20s", "|"+p.getpName()));
            System.out.print(String.format("%-6s", "|"+p.getSellPrice()));
            System.out.print(String.format("%-6s", "|"+p.getPoints()));
            System.out.print(String.format("%-6s", "|"+p.getAmounts()));
            System.out.print("\n");
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读