java - 如何在java中将一个列表类型转换为另一个列表?

标签 java list arraylist java-8 java-stream

我将 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/

相关文章:

java - 如何打印以空格分隔的同一个字符串n次

java - 使用 SSL 和 Bouncy CaSTLe 进行 Android 到服务器的通信

python - 列表列表和整数列表

java - 将文件中的输入解析为 ADT ArrayList

java - 包含移动圆圈的 ArrayList

java - 命令模式如何启用撤消?

java - Java 中的音频 : Why am I getting `null` ?

list - Lisp 循环列表

c++ - (C++) 使用节点/链表时得到不一致的结果。

java - 将 arrayList 数据加载到 JTable