package mypack;
import java.util.*;
public class ShoppingCart {
HashMap<String,ShoppingCartItem>items=null;
int numberOfItems=0;
public ShoppingCart()
{
items=new HashMap<String,ShoppingCartItem>();
}
public synchronized void add(String name,Object ob)
{
if(items.containsKey(name))
{
ShoppingCartItem scitem=items.get(name);
scitem.incrementQuantity();
}
else
{
ShoppingCartItem newItem=new ShoppingCartItem(ob);
items.put(name, newItem);
}
numberOfItems++;
}
public synchronized void remove(String name)
{
if(items.containsKey(name))
{
ShoppingCartItem scitem=items.get(name);
scitem.decrementQuantity();
if(scitem.getQuantity()<=0)
{
items.remove(name);
}
numberOfItems--;
}
}
public synchronized Collection<ShoppingCartItem>getItems()
{
return items.values();
}
public synchronized int getNumberOfItems()
{
return numberOfItems;
}
public synchronized int getTotal()
{
double amount=0.0;
for(ShoppingCartItem item:getItems())
{
Object objects =(Object)item.getitem();
amount+=item.getQuantity()*objects.getprice();
}
return roundOff(amount);
}
private int roundOff(double x)
{
long val=Math.round(x*100);
return (int)(val/100.0);
}
public synchronized void clear()
{
items.clear();
numberOfItems=0;
}
}
昨天剩了一个javabean没写完,这里是一些写代码时的查漏补缺
synchronized
是 Java 中的关键字,用于实现线程同步。当一个方法或代码块被synchronized
关键字修饰时,它将具有互斥性,即同一时间只能有一个线程访问该方法或代码块。这可以避免多个线程同时修改共享数据而引发的并发访问问题。在多线程环境下,如果多个线程同时访问共享资源,并且其中至少一个线程会修改该资源,就可能导致数据不一致或产生意想不到的结果。通过使用synchronized
关键字,可以确保同一时间只有一个线程能够访问被synchronized
修饰的代码块或方法,从而避免数据竞争和并发访问问题。containsKey
是 Java 中Map
接口的一个方法,用于检查一个映射中是否包含指定的键。它接受一个参数,即要检查的键对象,返回一个布尔值,表示映射中是否存在该键。
接下来是用jsp写界面
记一下一些查漏补缺
- 在 JSP 中,
<% %>
是用于插入 Java 代码块的标记,而不是用于注释的标记。JSP 中的注释标记是<%-- --%>
,它可以用于在 JSP 页面中注释掉一段代码或文本,这部分内容将被编译器忽略,不会被发送到客户端。
遇到了一些错误 明天排查吧
错误的代码就不发了,先贴个图