最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaWeb后臺(tái)購物車類實(shí)現(xiàn)代碼詳解

 更新時(shí)間:2020年07月25日 15:27:14   作者:MrDong先生  
這篇文章主要介紹了JavaWeb后臺(tái)購物車類實(shí)現(xiàn)代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

相信大家肯定都在電商網(wǎng)站買過東西,當(dāng)我們看中一件喜歡又想買的東西時(shí),這時(shí)候你又不想這么快結(jié)賬,這時(shí)候你就可以放入購物車;

就像我們平時(shí)去超市買東西一樣,會(huì)推著購物車去買東西;

那么我們接下來看看java怎么實(shí)現(xiàn)購物車的功能,其實(shí)原理很簡(jiǎn)單,java的特點(diǎn)就是面向?qū)ο?,并且有著封裝繼承多態(tài)三大特性;

java實(shí)現(xiàn)這個(gè)購物車功能是通過內(nèi)存來實(shí)現(xiàn)的而不是將數(shù)據(jù)添加到數(shù)據(jù)庫中

首先是Item類,一個(gè)Item就代表購物車?yán)锩娴囊恍袛?shù)據(jù)

package com.wxd.shopping;

public class Item {
  private int id; //商品id
  private String name;//商品名稱
  private String city;//商品產(chǎn)地
  private double price;//商品價(jià)格
  private int number;//商品數(shù)量
  private String picture;//商品圖片地址

  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 String getCity() {
    return city;
  }

  public void setCity(String city) {
    this.city = city;
  }

  public double getPrice() {
    return price;
  }

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

  public int getNumber() {
    return number;
  }

  public void setNumber(int number) {
    this.number = number;
  }

  public String getPicture() {
    return picture;
  }

  public void setPicture(String picture) {
    this.picture = picture;
  }

  /**
   * 重寫hashCode方法,使得在購物車添加商品的時(shí)候,如果id和名稱相同就判定為同一件商品
   * @return
   */
  @Override
  public int hashCode() {
    return (this.getId()+this.getName()).hashCode();
  }

  /**
   * 重寫equals方法,判斷是否為同一個(gè)對(duì)象
   * @param obj
   * @return
   */
  @Override
  public boolean equals(Object obj) {
    if(this==obj){
      return true;
    }
    if(obj instanceof Item){
      Item i= (Item) obj;
      if(this.getId()==i.getId()&&this.getName().equals(i.getName())){
        return true;
      }else{
        return false;
      }
    }else{
      return false;
    }
  }

  @Override
  public String toString() {
    return "Item{" +
        "id=" + id +
        ", name='" + name + '\'' +
        ", city='" + city + '\'' +
        ", price=" + price +
        ", number=" + number +
        ", picture='" + picture + '\'' +
        '}';
  }

  //有參構(gòu)造
  public Item(int id, String name, String city, double price, int number, String picture) {
    this.id = id;
    this.name = name;
    this.city = city;
    this.price = price;
    this.number = number;
    this.picture = picture;
  }
  //無參構(gòu)造
  public Item() {
  }
}

購物車類分裝了Item和數(shù)量的一個(gè)集合,還有商品的總金額

下面是購物車類的詳細(xì)代碼以及測(cè)試方法:

package com.wxd.shopping;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

//購物車
public class Cart {
  //購買商品的集合
  private HashMap<Item,Integer> goods;
  //購物車的總金額
  private double totalPrice;

  //構(gòu)造方法初始化數(shù)據(jù)
  public Cart(){
    goods=new HashMap<Item,Integer>();
    totalPrice=0.0;
  }
  public HashMap<Item, Integer> getGoods() {
    return goods;
  }

  public void setGoods(HashMap<Item, Integer> goods) {
    this.goods = goods;
  }

  public double getTotalPrice() {
    return totalPrice;
  }

  public void setTotalPrice(double totalPrice) {
    this.totalPrice = totalPrice;
  }
  //添加商品進(jìn)購物車的方法
  public boolean addGoodsInCart(Item item,int number){
    if(goods.containsKey(item)){
      goods.put(item,goods.get(item)+number);
    }else{
      goods.put(item,number);
    }
    calTotalPrice();//重新計(jì)算購物車的總金額
    return true;
  }
  //刪除商品的方法
  public boolean removeGoodsFromCart(Item item){
    goods.remove(item);
    calTotalPrice();//重新計(jì)算購物車的總金額
    return true;
  }
  //統(tǒng)計(jì)購物車的總金額
  public double calTotalPrice(){
    double sum=0.0;
    Set<Item> keys=goods.keySet();
    Iterator<Item> iterator = keys.iterator();
    while (iterator.hasNext()){
      Item i = iterator.next();
      sum+=i.getPrice()*goods.get(i);
    }
    this.setTotalPrice(sum);//設(shè)置購物車的總金額
    return this.getTotalPrice();
  }

  //測(cè)試的main方法
  public static void main(String[] args) {
    //先創(chuàng)建兩個(gè)商品對(duì)象
    Item i1=new Item(1,"耐克","溫州",300.0,500,"001.jpg");
    Item i2=new Item(2,"阿迪","廣州",500.0,500,"001.jpg");
    Item i3=new Item(1,"耐克","溫州",300.0,500,"001.jpg");
    Cart c=new Cart();
    c.addGoodsInCart(i1,1);
    c.addGoodsInCart(i2,2);
    //再次購買耐克鞋
    c.addGoodsInCart(i3,3);
    //遍歷購買商品的集合
    HashMap<Item, Integer> goods = c.getGoods();
    Set<Map.Entry<Item, Integer>> entries = goods.entrySet();
    for(Map.Entry<Item, Integer> itemEntry:entries){
      System.out.println(itemEntry.toString());
    }
    System.out.println("購物車總金額:"+c.getTotalPrice());
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot結(jié)合JSR303對(duì)前端數(shù)據(jù)進(jìn)行校驗(yàn)的示例代碼

    SpringBoot結(jié)合JSR303對(duì)前端數(shù)據(jù)進(jìn)行校驗(yàn)的示例代碼

    這篇文章主要介紹了SpringBoot結(jié)合JSR303對(duì)前端數(shù)據(jù)進(jìn)行校驗(yàn)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java中的while無限循環(huán)結(jié)構(gòu)及實(shí)例

    Java中的while無限循環(huán)結(jié)構(gòu)及實(shí)例

    這篇文章主要介紹了Java中的while無限循環(huán)結(jié)構(gòu)及實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java詳解多線程協(xié)作作業(yè)之信號(hào)同步

    Java詳解多線程協(xié)作作業(yè)之信號(hào)同步

    信號(hào)量同步是指在不同線程之間,通過傳遞同步信號(hào)量來協(xié)調(diào)線程執(zhí)行的先后次序。CountDownLatch是基于時(shí)間維度的Semaphore則是基于信號(hào)維度的
    2022-05-05
  • mybatis-plus 使用Condition拼接Sql語句各方法的用法

    mybatis-plus 使用Condition拼接Sql語句各方法的用法

    這篇文章主要介紹了mybatis-plus 使用Condition拼接Sql語句各方法的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java正則表達(dá)式處理特殊字符轉(zhuǎn)義的方法

    Java正則表達(dá)式處理特殊字符轉(zhuǎn)義的方法

    由于正則表達(dá)式定了一些特殊字符,而有時(shí)候需要對(duì)這些特殊字符進(jìn)行匹配的話就需要進(jìn)行轉(zhuǎn)義了,下面這篇文章主要給大家介紹了Java正則表達(dá)式處理特殊字符轉(zhuǎn)義的方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • Java實(shí)現(xiàn)FTP上傳到服務(wù)器

    Java實(shí)現(xiàn)FTP上傳到服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)FTP上傳到服務(wù)器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • SpringBoot JdbcTemplate批量操作的示例代碼

    SpringBoot JdbcTemplate批量操作的示例代碼

    本篇文章主要介紹了SpringBoot JdbcTemplate批量操作的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • Eclipse遠(yuǎn)程debug的步驟與注意事項(xiàng)

    Eclipse遠(yuǎn)程debug的步驟與注意事項(xiàng)

    今天小編就為大家分享一篇關(guān)于Eclipse遠(yuǎn)程debug的步驟與注意事項(xiàng),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Java中的Vector詳細(xì)解讀

    Java中的Vector詳細(xì)解讀

    這篇文章主要介紹了Java中的Vector詳細(xì)解讀,Vector是實(shí)現(xiàn)了List接口的子類,其底層是一個(gè)對(duì)象數(shù)組,維護(hù)了一個(gè)elementData數(shù)組,是線程安全的,Vector類的方法帶有synchronized關(guān)鍵字,在開發(fā)中考慮線程安全中使用Vector,需要的朋友可以參考下
    2023-09-09
  • 詳解Spring系列之@ComponentScan批量注冊(cè)bean

    詳解Spring系列之@ComponentScan批量注冊(cè)bean

    本文介紹各種@ComponentScan批量掃描注冊(cè)bean的基本使用以及進(jìn)階用法和@Componet及其衍生注解使用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-02-02

最新評(píng)論

沁水县| 遂宁市| 洪泽县| 平湖市| 宁陕县| 额敏县| 浦县| 丰原市| 太仆寺旗| 绵竹市| 谢通门县| 平舆县| 蓝山县| 芒康县| 微博| 江都市| 东至县| 松溪县| 浙江省| 元谋县| 东乡族自治县| 北辰区| 新晃| 改则县| 云梦县| 钦州市| 邢台县| 阆中市| 东山县| 永昌县| 珲春市| 清水县| 山阴县| 监利县| 松江区| 九龙县| 麻城市| 富蕴县| 菏泽市| 寻甸| 镇平县|