item是键,number是值,这是通过键获取值
但是你每次想要获取商品类里的信息时都要创建一个商品对象来接收getitembyid方法传来的值。可以说在这节课是方便了但其他地方反而有复杂了
if(arr.length>=5)//如果商品记录大于等于5条 这里商品记录大于5条 for循环的结果最少为4个值
{
for(int i=arr.length-1;i>=arr.length-iCount;i--)
{
itemlist.add(getItemsById(Integer.parseInt(arr[i])));
}
}
else//商品记录小于5条记录 这里商品记录小于5条 for循环的结果最多为3个值
{
for(int i=arr.length-1;i>=0;i--)
{
itemlist.add(getItemsById(Integer.parseInt(arr[i])));
}
}
return itemlist;
}
这一部分就是在获取前五条浏览记录啊。若总浏览数不超过5,就显示所有的浏览信息。若超过5,则倒序输出前五个浏览信息。
itemlist.add(getItemsById(Integer.parseInt(arr[i])));这一句将String型浏览记录转为int型,通过getItemsById()查询其具体信息,然后添加到itemlist中。
当在System.outprintln( item )时,会调用 Items 对象的 toString()方法. 不去重写的话就会输出地址值啥的.
在Map集合比较两个 Item 对象的时候会去调用 Item 对象的 equals() 和 hashCode() 方法. 不去重写的话是会根据地址值来比较两个 Item 对象的,而创建的两个对象的地址值是不一样的; MyEclipse自动重写的 equals() 和 hashCode() 方法可以变成: 比较两个对象的 成员变量 的值是否相同
对象对比两种情况:
我昨天丢了一个手机,你手机好像是我的
你的手机和我的手机一样
java默认采用第一类相等,即判断对象地址是否相同
重写equals方法,改为第2中相等,即判断对象具有的属性是否相等
应该有,但是我还没有学呢
我感觉是可以的
去熟悉一下Java的容器类吧,讲真。
set是一个键值对集合,保存了映射中的所有键值对,每个键值对里有一个Items对象和一个Integer对象
foreach循环遍历set,输出每个键值对
map的键值对
分配地址吧~
hashmap在内部判断两个对象是否相等,既要比较两个对象的hashcode也要用equals进行比较。
因为购物车的属性本身就不多,就两个goods和toatalprice,所以对这两个数据的操作方法写在一个类里面就行,不然重新建类又得连接 容易出错!
这个错误可以有很多原因啊,把你的错误信息贴上来看看。
HashSet在存放某个元素时,会先获取该元素的hashcode值,然后进行一系列的运算,之后确定将元素存放在什么位置;当存入相同对象时,会放在相同位置,也就是覆盖了;大概这么理解。
集合自己会调用 。set不可以装重复的对象,把对象放进集合的时候就会自己调用来比较对象是否相等,重写是为了满足自定义的比较条件。
对,因为每个对象生成的hashcode不一样,想要使创建的对象一样,可以合并,就要重写hashcode方法
这个项目是在JAVA遇见HTML——Jsp篇基础上做得,学习那个课程就可以了解啦!望采纳,如果还是不懂可以回复我!提醒:连接数据有时需要有相应的jar包才行哦
你再看一遍老师的课程,不懂的话继续看,看懂为止,看的过程中思考一下,有疑惑的可以谷歌一下,这样学的东西比较多,然后就跟着视频打代码,打多了自然就懂了。servlet具体的说我不知道怎么表达;概括的说是充当一个控制器,连接视图层和模型层。就说一个jsp页面中假如需要显示数据库的数据,则通过servlet来调用模型层的getter和setter方法,setter和getter方法可以封装数据库里的数据。具体自行上网学习一下,加油!!
public boolean addGoodsInCart(items item, int number) { if (goods.containsKey(item)) { goods.put(item, goods.get(item) + number); } else { goods.put(item, number); } calTotalPrice(); return true; }
map和set集合比较是否包含某一个元素,需要重写equals和hashcode方法。
list集合比较是否包含某一个元素,需要重写equals方法。
建议再好好学习下泛型,基础知识不够牢固。
如果不重新写,goods会把两个同样的item给添加进来。因为这两个item虽然属性相同但其实是不同的对象。
第二点呢...每个人的知识都有漏洞吧,我不知道“字符串本身就是hashcode”,java应用hash算法是为了方便检索内存里的东西。这个暂且不说。你提的问题“两个相同值得String类型对象得到的hashcode是一样得”。这个呢,下面截图有,第一张是jdk的官方文档,虽然是汉化版的。我所说的一样是指字符串对象(s1,s2)引用调用hashcode()方法返回的值是一样的。而第一张截图上说了,返回的是此对象的哈希码值。自然就是String对象的哈希码值,也即是堆中存储的String对象的哈希码值。不是你说的String值得哈希码。够清楚的吧...第三点,慎用网络用语:“呵呵”,“逗逼”,对陌生人用,这就是骂人的话,而不是调侃。还有什么疑问欢迎提出...
containsKey() 方法里面调用了hsahCode() equals()方法;
得到goods(Map类型的引用)里 Key是item的Value值。
像是这样:这是goods
Key | Value
a | 1
b | 2
item | 3
goods.get(item)=3
不会。hashcode是根据对象创建的,相同的名称对象也是不同的
右键->关闭硬件加速
当然这样也是可以的。但是如果一个类重写了hashcode和equals方法,就可以保证集合里面不添加重复元素了。这样的做法显然更灵活高效。
不知道你说的是哪几行代码,我猜测,得到的对象是Object类型,所以需要强制转换为商品