3.29学习内容

购物车和购物车条目的设计

1.什么是购物车和购物车条目

一个购物车中可以存储多个购物车条目信息,购物车应该使用集合来表示

购物车条目的信息不完全是商品的信息(比如数量)

购物车:cart shoppingcart

购物车条目:cartitem

2.购物车的设计

购物车的特点:

1.有序 添加的顺序,不是商品编号的顺序

2.添加和删除操作比较多,效率有要求

3.添加和删除必须先查询到,对查询效率也有要求

4.唯一:同一种只能出现一次,会累计数量

条件1必须满足,有序,添加顺序,没有商量

条件2、条件3是效率问题,可以商量

条件4:即使是不唯一的集合List,也可以通过编程实现唯一,可以不考虑

集合类型:

ArrayList:有序,添加顺序,可以考虑;不适合添加和删除,不是最佳方案

  但是考虑购物车不可能有很多条目,效率差异不大,可以考虑

  即使是不唯一的集合List,也可以通过编程实现唯一

LinkedList:有序,添加顺序,可以考虑;适合添加和删除,可以考虑

    但是添加和删除必须先查询,LinkedList查询效率低,不是最佳方案

    LinkedList每个节点不仅存数据,还存前后的地址,浪费一些空间 ,       不是最佳方案

HashSet:无序,排除

LinkedHashSet:有序,添加顺序;添加和删除效率高,查询效率高。ok?

     但是无法判断某个条目是否存在,因为无法确定之前的数量

TreeSet:不是参加顺序,排除


HashMap:无序,排除

LinkedHashMap:有序,添加顺序;添加和删除效率高,查询效率高

      能够判断某个条目是否存在吗?能!

      使用条目的id作为key,根据key获取条目

TreeMap:不是添加顺序,排除

LinkedHashMap是购物车的天然最佳方案


3.购物车条目的设计

方案1:直接使用Product作为购物车条目

1.购物车提哦啊木不需要Product的所有属性(只关注核心属性)

2.Product中没有购物车条目的数量

        可以在Product中增加一个数量自动作为购物车条目使用,但是不是最佳方案

方案2:使用新的类CartItem作为购物车条目

1.商品的关键属性:编号、名称、单价、颜色

2.新增的数量属性amount


IO流——FileInputStream

1.FileInputStream

字节流、输入流、节点流

2.相关操作(1)

如何创建一个输入流对象

InputStream fis = new FileInputStream(new File("d/bjsxt.txt"));

InputStream fis = new FileInputStream("d/bjsxt.txt");

如何读取一个字节

buf = fis.read();

如何关闭流

fis.close();

流不使用的时候一定要关闭。不关闭不会变成垃圾,不仅是堆内存中的数据,还有和硬盘和桑文件的链接资源

3.相关操作(2)

如何读取数据

int len = fis.read(buf);

如何将字节数组变成字符串

new String(buf,0,len)

new String(buf)


IO流——FileOutputStream

1.OutputStream

如果文件不存在,会自动创建

可以替换内容,也可以追加内容

new FileOutputStream(new File("d:/bjsxt1.txt"),true);

2.相关操作

如何创建输出流

OutputStream fos = new FileOutputStream(new File("d:/bjsxt1.txt"),true);

OutputStream fos = new FileOutputStream(new File("d:/bjsxt1.txt"));

OutputStream fos = new FileOutputStream("d:/bjsxt1.txt"); 如何写一个字节的数据

fos.write(n);

字节数组<----->字符串

字节数组==>字符串

new String(buf,0,len)

new String(buf)

字节数组<==字符串

byte buf[] = str.getBytes();



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值