• ArrayList相关问题


    
    
    /**
     *用户类
     */
    public class User {
        private int id;
        private String name;
        public User(){
            
        }
        public User(int id, String name) {
            super();
            this.id = id;
            this.name = name;
        }
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        
    }
    /**
     *订单类
     */
    public class OrderForm {
    
        private int id;
        private String Goods;//以json格式存储订单中所包含的商品信息
                           //[{"goods_id":1,"good_name":"白糖","good_type":"食物"}]
        private String addTime;
        private int userId;
        
        public OrderForm(){
            
        }
        
        public OrderForm(int id, String goods, String addTime, int userId) {
            super();
            this.id = id;
            Goods = goods;
            this.addTime = addTime;
            this.userId = userId;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getGoods() {
            return Goods;
        }
    
        public void setGoods(String goods) {
            Goods = goods;
        }
    
        public String getAddTime() {
            return addTime;
        }
    
        public void setAddTime(String addTime) {
            this.addTime = addTime;
        }
    
        public int getUserId() {
            return userId;
        }
    
        public void setUserId(int userId) {
            this.userId = userId;
        }
           
    }
    /**
      *订单商品类(订单中包含的商品)
      */
    public class OrderFormGoods {
        private int id;
        private String good_name;
        private String type;
            
        public OrderFormGoods(){
            
        }
        
        public OrderFormGoods(int id, String good_name, String type) {
            super();
            this.id = id;
            this.good_name = good_name;
            this.type = type;
        }
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getGood_name() {
            return good_name;
        }
        public void setGood_name(String good_name) {
            this.good_name = good_name;
        }
        public String getType() {
            return type;
        }
        public void setType(String type) {
            this.type = type;
        }
            
    }
    /**
     *评价类
     */
    public class Evaluate {
        private int id;
        private String eva_info;// 评价内容
        private int orderFormId;// 订单id
        private int goodId;// 商品id
        private int userId;
    
        public Evaluate() {
    
        }
    
        public Evaluate(int id, String eva_info, int orderFormId, int goodId ,int userId) {
            super();
            this.id = id;
            this.eva_info = eva_info;
            this.orderFormId = orderFormId;
            this.goodId = goodId;
            this.userId = userId;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getEva_info() {
            return eva_info;
        }
    
        public void setEva_info(String eva_info) {
            this.eva_info = eva_info;
        }
    
        public int getOrderFormId() {
            return orderFormId;
        }
    
        public void setOrderFormId(int orderFormId) {
            this.orderFormId = orderFormId;
        }
    
        public int getGoodId() {
            return goodId;
        }
    
        public void setGoodId(int goodId) {
            this.goodId = goodId;
        }
        public int getUserId() {
            return userId;
        }
        public void setUserId(int userId) {
            this.userId = userId;
        }
    }

       

     1 public class Demo {
     2 
     3     /**
     4      * @return 订单中有评价的商品
     5      */
     6     public static List<OrderFormGoods> fun(){
     7         
     8      System.out.println("=============开始添加临时数据!!!==============");
     9      
    10      List<User>user_list = new ArrayList<>();
    11      user_list.add(new User(1,"盖伦"));
    12      user_list.add(new User(2,"鲁迅"));
    13      
    14      List<OrderForm>orderForm_list = new ArrayList<>();
    15      orderForm_list.add(new OrderForm(1,"["
    16              + "{'id':34,'good_name':'饮血剑','type':'武器'},"
    17              + "{'id':56,'good_name':'血瓶','type':'消耗品'},"
    18              + "{'id':1,'good_name':'多兰之盾','type':'防御'}"
    19              + " ]","2015-9-18",1));
    20      orderForm_list.add(new OrderForm(2,"["
    21              + "{'id':55,'good_name':'+30 冰河裂谷剑','type':'武器'},"
    22              + "{'id':12,'good_name':'魔剑·阿波菲斯','type':'武器'}"
    23              + "]","2015-1-1",1));
    24      orderForm_list.add(new OrderForm(3,"["
    25              + "{'id':32,'good_name':'里鬼剑术','type':'技能'}"
    26              + "]","2011-3-18",1));
    27      orderForm_list.add(new OrderForm(4,"["
    28              + "{'id':80,'good_name':'流星·刺','type':'技能'},"
    29              + "{'id':79,'good_name':'流星·跃','type':'技能'},"
    30              + "{'id':78,'good_name':'流星·升','type':'技能'},"
    31              + "{'id':99,'good_name':'流星·落','type':'技能'},"
    32              + "{'id':565,'good_name':'+13 深海熔岩肩甲','type':'护甲'}"
    33              + "]","1998-9-18",2));
    34      
    35       List<Evaluate>eva_list = new ArrayList<>();
    36       eva_list.add(new Evaluate(1,"不够结实,断掉了",1,34,1));
    37       eva_list.add(new Evaluate(45,"不错",1,56,1));
    38       eva_list.add(new Evaluate(33,"不好",1,1,1));
    39       eva_list.add(new Evaluate(31,"霸气",2,55,1));
    40       eva_list.add(new Evaluate(65,"装逼神器",2,12,1));
    41       eva_list.add(new Evaluate(56,"技能很帅,秒天秒地",3,32,1));
    42       eva_list.add(new Evaluate(44,"霸气",4,80,2));
    43       eva_list.add(new Evaluate(70,"很不错的技能",4,79,2));
    44       eva_list.add(new Evaluate(71,"流星技能很帅",4,78,2));
    45       eva_list.add(new Evaluate(72,"还不错",4,99,2));
    46       //eva_list.add(new Evaluate(73,"防御力很好",4,565,2));
    47         
    48       System.out.println("==============数据添加完毕!!!==============");    
    49     
    50        List<OrderFormGoods> ofg_list = new ArrayList<OrderFormGoods>();
    51       int user_id=1;
    52 
    53       for (OrderForm of : orderForm_list) {
    54             if(of.getUserId()==user_id){ 
    55                 List<OrderFormGoods>orderFormGoods_list = JSON.parseArray(of.getGoods(),OrderFormGoods.class);//把json格式的字符串转换成集合
    56                 //OrderFormGoods orderFormGood = new OrderFormGoods();    
    57                 for (OrderFormGoods ofg : orderFormGoods_list) {//遍历用户id为1的订单中所包含的商品
    58                     OrderFormGoods orderFormGood = new OrderFormGoods();//创建实例对象    
    59                       for (Evaluate evaluate : eva_list) {  //遍历评价
    60                         if(evaluate.getGoodId()==ofg.getId()&&evaluate.getUserId()==user_id){//判断用户订单中的商品是否有评论
    61                             orderFormGood.setId(ofg.getId());
    62                             orderFormGood.setGood_name(ofg.getGood_name());
    63                             orderFormGood.setType(ofg.getType());
    64                             ofg_list.add(OrderFormGood);  //如果有评价,把商品添加到集合
    65                         }
    66                     }
    67                 }
    68             }
    69     }
    70       
    71         return ofg_list; 
    72         
    73     }
    74     
    75     public static void main(String[] args) {
    76         List<OrderFormGoods>list = fun();
    77         for (OrderFormGoods orderFormGoods : list) {
    78             System.out.println(orderFormGoods.getGood_name());
    79         }
    80     }
    81 }

         这些示例代码是把项目订单评价这一部分简单抽象出来的,可以输出某一用户评价过的商品,代码的主人留下了一个bug,当某一订单存在多个商品,这三个商品全部会显示成最后一个。

         这个bug被指给我,发现造成这个问题的原因是ArrayList(50行)的值被覆盖,代码出错在56行。创建实例的操作写在for循环前面,也就是说每次遍历(59行)时,都会覆盖前一次添加到集合里的值,因为实例对象只有一个。

  • 相关阅读:
    伟大的作曲家 —— 贝多芬与莫扎特、巴赫
    伟大的作曲家 —— 贝多芬与莫扎特、巴赫
    动漫知多少
    动漫知多少
    品牌的命名
    品牌的命名
    作为电磁波的 Wi-Fi 信号
    作为电磁波的 Wi-Fi 信号
    Opencv 使用Stitcher类图像拼接生成全景图像
    Hibernate的fetch
  • 原文地址:https://www.cnblogs.com/sflik/p/4820485.html
Copyright © 2020-2023  润新知