我将 Cache 声明为 Map:
private Cache<String,Object> operatingParametersCache;
我正在从服务类中获取数据并将其放入缓存中:
List<OperatingParametersDTO> objList=this.operatingParamService.getOperatingParamDTO();
operatingParametersCache = cacheManager
.createCache("cacheOfOperatingService", CacheConfigurationBuilder
.newCacheConfigurationBuilder(
String.class,Object.class,
ResourcePoolsBuilder.heap(100000)).withExpiry(Expirations.timeToLiveExpiration(Duration.of(60000,
TimeUnit.SECONDS))));
operatingParametersCache.put("CACHE_OPERATING_PARAMETER",objList);
我尝试使用以下方法从缓存中获取值:
List<Object> operatingvalues = new ArrayList<>();
operatingParametersCache.forEach(entry -> operatingvalues.add(entry.getValue()));
System.out.println(operatingvalues);
我想转换这个 List<Object>
至 List<OperatingParametersDTO>
, 所以我尝试使用 :
List<OperatingParametersDTO> listA = new ArrayList<OperatingParametersDTO>(operatingvalues);
但我得到:无法解析构造函数'ArrayList(java.util.List)'
最佳答案
最简单的方法是声明一个具有适当类型的列表:
List<OperatingParametersDTO> operatingvalues = new ArrayList<>();
并转换:
operatingParametersCache.forEach(entry -> operatingvalues.addAll(((List) entry.getValue()).stream().map(el -> (OperatingParametersDTO) el).collect(Collectors.toList())));
你也可以转换每一个元素:
List<OperatingParametersDTO> listA = operatingvalues.stream()
.map(el -> (OperatingParametersDTO) el)
.collect(Collectors.toList());
您不能将一种类型的集合转换为另一种类型的集合,更多详情 here .
关于java - 如何在java中将一个列表类型转换为另一个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57815908/