代码主要是实现将redis中存储的数据(Key 的格式为 cake_蛋糕分类id:蛋糕id,value 为一个实体类对象格式的 Json 字符串;使用StringRedisTemplate存储)获取到list中
完整代码
package org.lanqiao.service;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.lanqiao.entity.CakeInfo;
import org.lanqiao.mapper.CakeInfoDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
@Service
public class CakeInfoServiceImpl implements CakeInfoService {
@Autowired
CakeInfoDao cid;
@Autowired
StringRedisTemplate srt;
@Override
public List<CakeInfo> findCakeInfo(int cakeClassId) {
/**
* Find all keys matching the given pattern.
*/
String keypattern = "cake_" + cakeClassId + ":*";
Set<String> keys = srt.keys(keypattern);
System.out.println("keys is" + keys);
List<CakeInfo> cakeInfoList = new ArrayList<>();
List<String> list = Arrays.asList(keys.toArray(new String[0]));
list.forEach((s) -> {
/**
* 利用hutool工具进行类型拷贝
*/
CakeInfo bean = JSONUtil.toBean((JSONObject) JSONUtil.parse(srt.opsForValue().get(s)),CakeInfo.class);
cakeInfoList.add(bean);
});
return cakeInfoList;
}
}
其中下面的代码是使用hutool工具实现的拷贝,想问一下如果要求不用任何第三方工具如何实现不同list泛型间转换?如list<String>
与list<CakeInfo>
转化
list.forEach((s) -> {
/**
* 利用hutool工具进行类型拷贝
*/
CakeInfo bean = JSONUtil.toBean((JSONObject) JSONUtil.parse(srt.opsForValue().get(s)),CakeInfo.class);
cakeInfoList.add(bean);
});
用ObjectMapper来实现这个功能的代码:
import com.fasterxml.jackson.databind.ObjectMapper;
// ...
list.forEach((s) -> {
try {
ObjectMapper mapper = new ObjectMapper();
CakeInfo bean = mapper.readValue(srt.opsForValue().get(s), CakeInfo.class);
cakeInfoList.add(bean);
} catch (IOException e) {
e.printStackTrace();
}
});
List<CakeInfo> cakeInfoList = list.stream()
.map(s -> {
try {
return new ObjectMapper().readValue(srt.opsForValue().get(s), CakeInfo.class);
} catch (IOException e) {
throw new RuntimeException(e);
}
})
.collect(Collectors.toList());
使用jackson 来转换
ObjectMapper objectMapper = new ObjectMapper();
List<Cake> cakes = cakeJsonStrings.stream()
.map(jsonString -> {
try {
return objectMapper.readValue(jsonString, Cake.class);
} catch (JsonProcessingException e) {
e.printStackTrace();
return null;
}
})
.filter(Objects::nonNull)
.collect(Collectors.toList());
以下代码之间有什么区别吗? 和 如果是的话,有人能解释一下区别以及何时使用什么?
我试图在java中实现不同类型之间的转换器:我有一个超级类foo,有2个子类: fo1和fo2,我也有2个不相关的其他类bar1和bar2,我试图实现一个转换器从bar1到fo1和bar2to fo2(与之相反)。 因为我在这里有继承,所以我想应该创建一个泛型类型的接口(将是bar1或bar2),它将定义转换所需的函数,我还想让转换器成为bar1和bar2的通用转换器,我认为它应该以某种方式使用接
问题内容: 我从UDP套接字获取了一个字节片(),并希望将其视为整数片(),而无需更改基础数组,反之亦然。在C(++)中,我只是在指针类型之间进行转换;我将如何在Go中执行此操作? 问题答案: 正如其他人所说,在Go中强制转换指针被认为是错误的形式。这是正确的Go方式示例以及与C数组转换等效的示例。 警告:所有代码未经测试。 在此示例中,我们使用包将每组4个字节转换为。这样更好,因为我们指定了字节
我在我的一个实用程序类中有一个方法,它接受一个集合和一个类对象,并返回一个Iterable实例,该实例可以遍历作为指定类实例的集合的所有成员。其签名为: 这对于大多数用例都非常有效,但现在我需要将其与泛型类
问题内容: 这是我的问题:鉴于这些课程 此代码编译: 并且这不: 是什么赋予了? 更新: 此代码可在Java 8中编译。显然是由于“改进的类型推断”。 问题答案: 在第一个示例中,调用的推断类型为,显然可以将其分配给相同类型的变量。 在第二个示例中,右侧的类型为。虽然 是 分配给, 不 分配给。它可以分配给。 其原因与a 不可分配给的原因相同。如果是这样,它将使以下(非类型安全的)代码成为可能:
问题内容: 我正在编写一些Swift代码,其中有一个包含通用类型的数组: 稍后在我的代码中,我需要确定存储在数组中的类型。我尝试使用文档中描述的类型转换技术(尽管泛型没有使用过)。 上面的switch语句在编译时导致以下错误: 发出IR SIL功能@ _TFC19Adder_Example Mac6Matrix9transposeUS 7ElementfGS0_Q__FT_GSqGS0_Q___以