美文网首页
Java集合类

Java集合类

作者: 天才一般的幼稚 | 来源:发表于2019-03-06 19:18 被阅读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");
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:Java集合类

          本文链接:https://www.haomeiwen.com/subject/rcctpqtx.html