for循环使用后contains方法失去效果
重写了cartInfo中的equals和hashcode方法 第一种方式:
包含是可以的
List<CartInfo> cookie = new ArrayList<CartInfo>();
List<CartInfo> redis = new ArrayList<CartInfo>();
//缓存中实体类
redis.add(new CartInfo(1L,5,new BigDecimal(0.5)));
redis.add(new CartInfo(2L,5,new BigDecimal(0.5)));
//cookie的实体类
cookie.add(new CartInfo(1L,5,new BigDecimal(1.5)));
cookie.add(new CartInfo(3L,5,new BigDecimal(1.5)));
CartInfo cookieCartInfo = new CartInfo(1L,5,new BigDecimal(0.5));
//判断redis中是否包含单个cookie实体类
if (redis.contains(cookieCartInfo)) {
System.out.println(true);
} 第二种方式:
包含是不可以的
List<CartInfo> cookie = new ArrayList<CartInfo>();
List<CartInfo> redis = new ArrayList<CartInfo>();
//缓存中实体类
redis.add(new CartInfo(1L,5,new BigDecimal(0.5)));
redis.add(new CartInfo(2L,5,new BigDecimal(0.5)));
//cookie的实体类
cookie.add(new CartInfo(1L,5,new BigDecimal(1.5)));
cookie.add(new CartInfo(3L,5,new BigDecimal(1.5))); getCartList(redis,cookie);
public List<CartInfo> getCartList(List<CartInfo> redis,List<CartInfo> cookie){
for (CartInfo info : cookie) {
if(redis.contains(info)){
for (CartInfo cartInfo : redis) {//遍历缓存
if(cartInfo.getProductId().equals(info.getProductId())){//判断cookie的产品id和缓存中的产品id是否相等
//合并缓存和cookie的数据
cartInfo.setProductNumber(cartInfo.getProductNumber()+info.getProductNumber());
cartInfo.setProductPrice(cartInfo.getProductPrice().add(info.getProductPrice()));
}
}
}else{
redis.add(info);
} }
return redis;
}
redis.contains(info)明明包含了info但是实际判断是不包含 区别在于后者进行遍历了 被逼无奈只能添加自定义方法代替contains
public boolean Acontains(List<CartInfo> redis,CartInfo info){
boolean flag = false;
for (CartInfo redi : redis) {
if(redi.getProductId().equals(info.getProductId())){
return true;
}
}
return flag;
}
for循环使用后contains方法失去效果的更多相关文章
- Java ArrayList正确循环添加删除元素方法及分析
在阿里巴巴Java开发手册中,有这样一条规定: 但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考. 一.foreach循环 foreach循环(Foreach loop)是计算机编程 ...
- 永远不要在循环之外调用wait方法
1. 前言 随着摩尔定律的失效,Amdahl定律成为了多核计算机性能发展的指导.对于现在的java程序员们来说,并发编程越来越重要和习以为常.很惭愧和恐慌的是我对java的并发编程一直是只知道概念,入 ...
- Axure实现提示文本单击显示后自动消失的效果
Axure实现提示文本单击显示后自动消失的效果 方法/步骤 如图所示,框出的部分为提示文本(已经命名为tooltip),希望达到的效果是默认加载时不显示,点击帮助图标后显示,且2秒后自动消失. ...
- for循环与内置方法详解
''' for循环与内置方法详解 ''' # 循环:重复(按照某种规律的)做一件事情 # lt = [1, 2, 3, 4] # # ind = 0 # # while True: # print(l ...
- JS中For循环中嵌套setTimeout()方法的执行顺序
在For循环中执行setTimeOut()方法的代码,执行顺序是怎样的呢? 代码如下 function time() { for(var i= 0;i<5;i++){ setTimeout(fu ...
- python-turtle-画雪花-2种方法及效果的详解
1.方法一: 代码: #python3.8 #xuguojun #2020.1.30 #导出模块 import turtle as t import random as r #定义画雪 def dra ...
- 学好Spark/Kafka必须要掌握的Scala技术点(一)变量、表达式、循环、Option、方法和函数,数组、映射、元组、集合
前言 Scala是以JVM为运行环境的面向对象的函数式编程语言,它可以直接访问Java类库并且与Java框架进行交互操作.正如之前所介绍,Spark是用Scala语言编写的,Kafka server端 ...
- 零基础学习java------day5------do....while循环、嵌套、方法(函数)
1 do...while循环 格式 初始化语句; do { 循环体语句; 控制条件语句; }while(判断条件语句); 流程: 先执行初始化语句 再执行循环体语句 再执行条件控制语句 再做条件的判 ...
- System.Configuration引用后ConfigurationManager方法用不了
System.Configuration引用后ConfigurationManager方法却用不了,提示没有引用 需手动添加引用 项目-引用-右击-添加引用-找到System.Configuratio ...
随机推荐
- 在搭建Hadoop集群环境时遇到的一些问题
最近在学习搭建hadoop集群环境,在搭建的过程中遇到很多问题,在这里做一些记录.1. SSH相关的问题 问题一: ssh: connect to host localhost port 22: Co ...
- 逆转单向链表看这一篇就够了【JAVA】
逆转单向链表 逆转前: 1 -> 2 -> 3 -> 4 -> 5 -> null 逆转后: 5 -> 4 -> 3 -> 2 -> 1 -> ...
- 4、1 IK分词器
我们在浏览器地址栏输入 http://127.0.0.1:9200/_analyze?analyzer=chinese&pretty=true&text=我是程序员 默认的中文分词是将 ...
- IO-file-05 文件夹的创建
package com.bwie.io; import java.io.File; /** * 创建目录 * 1.mkdir:确保上级目录存在,不存在创建失败 * 2.mkdirs:上级目录可以不存在 ...
- mac 10.14.5 [vue create的时候 mkdir没有权限]
1.vue create的时候 mkdir没有权限 2.第一步.先检查系统是否开启了安全模式 csrutil status 3.如果是disabled.进去步骤5,直接查看文件夹权限.如果是enabl ...
- win10系统不能ping通vmware虚假机解决办法
在使用vmware安装虚拟机后,在虚拟机里面可以上网,但就是不能在宿主机通过远程连接工具连接 同时也不能ping通虚拟机 检查网络配置 查看网关 在宿主机打开 ip地址填写刚刚查看的网关,同时把子网掩 ...
- pytorch中F.softmax(x1,dim = -1) dim 取值测试及验证
# -*- coding: utf-8 -*- """ Created on Mon May 27 11:09:52 2019 @author: jiangshan &q ...
- [转帖]关于DDR4内存颗粒、单双面、主板布线和双通道的那些事儿
我们200期的期中测试大家都做了吧,今天我们放出了完整的答案,想知道自己错在哪儿的同学赶紧过去看哟=><这次期中考试你拿到满分了吗?没有就快去补习吧> https://www.exp ...
- vmware安装win7*64位时,安装不成功的关键点是光驱接口类型选择为IDE模式
mware 安装win7*64时,找不到光盘,后来在xin7*64的虚拟机下的编辑虚拟机设置 找到光驱,点击高级,并选择IDE即可,这样就可以进入虚拟机找到光驱和硬盘到了.进入winpe后可以看到各种 ...
- windows通过gcc编译代码
1.将gcc添加到环境变量 2.检查gcc是否安装成功 cmd下输入gcc –v 3.cd进入需要编译源文件的目录 4.dir查看当前目录下是否有需要编译的文件(linux下用ls) 5.编译文件(H ...